자바8to11

Map.of() 사용시 주의 사항

lby132 2022. 8. 28. 18:33

자바 9버전 부터 사용할 수 있는 Map.of()를 통해 Map을 초기화 하는 과정에서 주의할 점이 있다.

자바 전 버전에서는 원래 Map을 초기화 할땐

Map<Integer, String> map = new HashMap<>() {

        map.put(1, "abc");

        map.put(2, "cde");

        map.put(3, "fgh");

}

이렇게 초기화 했다면

 

Map<Integer, String> map = Map.of(

       1, "abc",

       2, "cde",

       3, "fgh"

);

 

이렇게 간단하게 작성 할 수있다.

하지만 of()메소드를 타고 들어가보면 최대 열개까지 밖에 되지 않는다. 즉,

 

Map<Integer, String> map = Map.of(

       1, "abc",

       2, "cde",

       3, "fgh"

       4, "dsf",

       5, "sdf",

       6, "ccc",

       7, "ddd",

       8, "vvv",

       9, "ppp",

       10, "aaa",

       11, "zzz"

);

이렇게 10개 이상을 한번에 초기화를 하려고 하면 컴파일 에러가 난다.

그래서 이런 경우에는 Map.ofEntries()로 초기화를 해주면 더 많은 양의 데이터들을 초기화 할 수 있다.

 

본론으로 돌아와서 사용시 주의 사항은 of()나 ofEntries()는 Immutable 객체를 반환한다는 것이다.

즉, 초기화가 되고 난 후에는 put이나 remove를 할 수 없는것이다.

만약 단순히 초기화 후에 조회만 하는 경우라면 사용해도 되지만 그게 아닐땐 put같은 이전 방식을 사용해야 한다.

'자바8to11' 카테고리의 다른 글

함수형 인터페이스  (0) 2022.12.18
iterate와 generate의 차이  (0) 2022.09.01
스레드 wait()과 notify()  (0) 2022.08.16
Stream  (0) 2021.09.12
멀티코어 컴퓨터  (0) 2021.09.05