🌻 JAVA/정리정리정리

Java9 , Map.of(key, value);

iseunghan 2020. 8. 24. 22:07
반응형

 

https://www.amitph.com/create-hashmap-in-java/

 

Map.of 에는  key와 value를 최대 10개 까지 넣을 수 있는 메소드를 지원한다.

 

 

아래와 같이 map을 생성하면 된다.

Map<Integer, String> map = Map.of(1, "first", 2, "second");

실행 결과

{"1":{"name":"first"},"2":{"name":"second"}}

 

 

example

import java.util.Map;
public class MapOf1 {
  public static void main(String[] args) {
	Map<Integer, String> map = Map.of(101, "PP", 102, "QQ", 103, "RR");
	map.forEach((k, v) -> System.out.println(k + " - " + v));
  }
} 

여기서 이제 값을 넣으려고 put 하려고 하면

map.put(104, "SS");

아래와 같은 에러가 발생한다.

Exception in thread "main" java.lang.UnsupportedOperationException 

 

 

immutable Map 에 값을 넣을땐, List를 사용 해야한다.

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class MapOf3 {
  public static void main(String[] args) {
	List<String> list1 = new ArrayList<>();
	list1.add("P1");
	list1.add("Q1");	
	List<String> list2 = new ArrayList<>();
	list2.add("P2");
	list2.add("Q2");	
	
	Map<Integer, List<String>> map = Map.of(111, list1, 222, list2);
	System.out.println(map);
	
	list1.add("R1");
	System.out.println(map);	
  }
} 

그러면 아래와 같이 예외 없이, 값을 추가 시킬 수 있다.

{111=[P1, Q1], 222=[P2, Q2]}      // 값 추가 전
{111=[P1, Q1, R1], 222=[P2, Q2]}  // 값 추가 후

 

 

출처 : https://www.concretepage.com/java/java-9/java-map-of-and-map-ofentries

반응형