728x90
일반적인 수단
// 변경불가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);
자바 8
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()));
자바9
조금더 간단해졌다.
Set<String> set = Set.of("a", "b", "c");
List<Integer> list = List.of(1, 2, 3);
마찬가지로 아래와 같은 map 타입은 아래와 같이 작성 가능하다.
Map<String, String> map = Map.of("a", "1", "b", "2", "c", "3");
주의 ! key ,value 가 쌍으로 나타나므로 파라미터는 무조건 짝수 이다.
Map.of()
Map.of(k1, v1)
Map.of(k1, v1, k2, v2)
Map.of(k1, v1, k2, v2, k3, v3)
...
그리고 갑자기 asXxx() 등 함수들이 자주 등장하는데 차이가 면지 궁금하지 않는가?
List.of vs Arrays.asList 를 예로 들면
- List.of -> 변경불가
- Arrays.asList -> 변경가능 ( 주의 , 사실 요놈은 애매한 놈임. 변경불가능이긴 하지만 set을 이용하 변경가능함.헷갈리지? 하지만 List.of는 아예 안됨. set을 호출시 java.lang.UnsupportedOperationException 이 나온다!)
- List.of null 허용하지않음 ,Arrays.asList null 허용
'Back-end > Spring&SpringBoot' 카테고리의 다른 글
Spring에서 자주는 주는 확장방식들 (0) | 2022.12.19 |
---|---|
System.currentTimeMillis 말고 ? (0) | 2022.12.19 |
Stream -> List 로 전환하는 몇가지 방법? (0) | 2022.12.13 |
Stream.toList() vs Collectors.toList() 성능비교 (0) | 2022.12.13 |
SpringBoot + SpringSecurity +JWT = RBAC (0) | 2022.12.13 |