JAVA9
Java 9에서 새로운 api를 지원하여 코드량은 줄고 가독성은 쉬워지도록 업그레이드 되었다.。
불변의 Collection 객체 생성 방식.
// 불변의 Set
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
set = Collections.unmodifiableSet(set);
// 불변의 List
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list = Collections.unmodifiableList(list);
Java8 부터 Stream API 사용하면 좀더 직관적인 코드로 구현할수 있다.
Set<String> set = Collections.unmodifiableSet(Stream.of("a", "b", "c").collect(toSet()));
List<Integer> list = Collections.unmodifiableList(Stream.of(1, 2, 3).collect(toList()));
#Java9的写法
Java 9 이런 부분이 간소화 되었고 아래와 같이 작성하면 됩니다.
Set<String> set = Set.of("a", "b", "c");
List<Integer> list = List.of(1, 2, 3);
마찬가지로 아래와 같이 조금 더 복잡한 collenction 도 동일하게 지원 됩니다.
Map<String, String> map = Map.of("a", "1", "b", "2", "c", "3");
유의해야 될 부분은 Map.of는 파라미터가 key와 value 로 무조건 쌍으로 이루어 집니다.
Map.of()
Map.of(k1, v1)
Map.of(k1, v1, k2, v2)
Map.of(k1, v1, k2, v2, k3, v3)
...
asList와의 차이점
List.of 와 Arrays.asList 들의 차이점:
Java 9 의
List.of 변경할수 없는 List이며 Arrays.asList 는 변경 가능.
List.of 와 Arrays.asList 모두
add와remove를 할수 없지만,Arrays.asList는
set을 이용하여 아이템을 변경할수 있지만List.of 안됨.
강제로 변경 시도시
java.lang.UnsupportedOperationException 발생.
List.of
null 허용하지 않음,Arrays.asList null 허용
Last updated