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

Java 9에서 수정 불가능한 맵을 어떻게 만들 수 있습니까?

<시간/>

수정할 수 없는 지도 추가할 수 없음 , 제거됨 , 또는 업데이트됨 지도의 수정 불가능한 인스턴스가 생성되면 정적 팩토리 메소드:Map.of()Map.ofEntries() Java 9에서 수정할 수 없는 지도를 만드는 편리한 방법을 제공하는 지도에서 .

Map.of()를 사용하여 만든 지도의 인스턴스 및 Map.ofEntries() 메소드는 다음과 같은 특징이 있습니다.

  • 팩토리 메소드에서 반환된 지도는 일반적으로 불변합니다. . 추가할 수 없음 , 제거됨 , 또는 업데이트됨 . 지도에서 mutator 메서드를 호출하면 UnsupportedOperationException이 발생합니다. .
  • 포함된 키/값 지도 자체가 변경 가능 , 지도가 일관되지 않게 작동할 수 있습니다. 또는 그 내용이 변경되는 것처럼 보입니다.
  • 변경 불가능한 지도는 null 을 허용하지 않습니다. 가치 . null 키 또는 값으로 생성을 시도하면 NullPointerException이 발생합니다. .
  • 중복 생성 시 거부됩니다. 정적 팩토리 메소드에 중복 키를 전달하면 IllegalArgumentException이 발생합니다. .
  • 불변 지도 직렬화 가능 모든 키와 값이 직렬화 가능한 경우
  • 매핑 반복 순서가 지정되지 않음 변경될 수 있습니다.

구문

Map.of(k1, v1, k2, v2)
Map.ofEntries(entry(k1, v1), entry(k2, v2),...)

Map.of()의 예

import java.util.Map;
public class UnmodifiableMapTest {
   public static void main(String[] args) {
      Map<String, String> empMap = Map.of("101", "Raja", "102", "Adithya", "103", "Jai", "104", "Chaitanya");
      System.out.println("empMap - " + empMap);
      empMap.put("105", "Vamsi");      // throws UnsupportedOperationException
   }
}

출력

empMap - {104=Chaitanya, 103=Jai, 102=Adithya, 101=Raja}
Exception in thread "main" java.lang.UnsupportedOperationException
         at java.base/java.util.ImmutableCollections.uoe(Unknown Source)
         at java.base/java.util.ImmutableCollections$AbstractImmutableMap.put(Unknown Source)
         at UnmodifiableMapTest.main(UnmodifiableMapTest.java:7)


Map.ofEntries()의 예

import java.util.Map;
import static java.util.Map.entry;
public class UnmodifidMapTest {
   public static void main(String[] args) {
      Map<String, String> empMap = Map.ofEntries(entry("101", "Raja"), entry("102", "Adithya"), entry("103", "Jai"), entry("104", "Chaitanya"));
      System.out.println("empMap - " + empMap);
   }
}

출력

empMap - {102=Adithya, 101=Raja, 104=Chaitanya, 103=Jai}