자바 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 |