Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 9에서 수정할 수 없는 집합을 어떻게 만들 수 있습니까?

<시간/>

불변의 정적 팩토리 메소드 Set.of() 수정 불가 를 생성하는 편리한 방법을 제공할 수 있습니다. 세트 자바 9에서.

Set.of()를 사용하여 생성된 집합의 인스턴스 메소드는 다음과 같은 특징이 있습니다.

  • 팩토리 메서드에서 반환된 집합은 일반적으로 불변합니다. . 요소를 추가할 수 없음을 의미합니다. , 제거됨 , 또는 대체 세트에서. 모든 mutator 호출 Set의 메소드가 UnsupportedOperationException을 발생시킵니다. .
  • Set의 포함된 요소가 변경 가능인 경우 , 세트의 내용이 변경된 것처럼 보일 수 있습니다.
  • 불변 설정 null을 허용하지 않는 정적 팩토리 메서드를 사용하여 생성할 수 있습니다. 집단. null 요소로 만들려고 하면 NullPointerException이 발생합니다. .
  • 중복을 거부합니다. 요소 불변 집합 생성 시. 정적 팩토리 메소드에 전달된 중복 요소는 IllegalArgumentException을 발생시킵니다. .
  • 세트 요소의 반복 순서가 지정되지 않음 변경될 수 있습니다.

구문

Set.of(E... elements)

import java.util.Set;
public class SetOfMethodTest {
   public static void main(String args[]) {
      Set<String> names = Set.of("Adithya", "Bhavish", "Chaitanya", "Jai");
      System.out.println("Names - " + names);
      names.add("Raja");       // throws UnsupportedOperationException
   }
}

출력

Names - [Bhavish, Adithya, Jai, Chaitanya]
Exception in thread "main" java.lang.UnsupportedOperationException
 at java.base/java.util.ImmutableCollections.uoe(Unknown Source)
 at java.base/java.util.ImmutableCollections$AbstractImmutableSet.add(Unknown Source)
   at SetOfMethodTest.main(SetOfMethodTest.java:8)