728x90
반응형
SMALL
컬렉션 팩토리
Java 9에서는 적은 요소를 포함하는 List, Map, Set을 쉽게 만들 수 있도록 팩토리 메서드가 등장했다.
List
List<String> fritends = new ArrayList<>();
friends.add("A");
friends.add("B");
friends.add("C");
// Arrays.asList() 팩토리 메서드 사용
List<String> friends = Arrays.asList("A", "B", "C");
// List.of 팩토리 메서드 사용
List<String> friends = List.of("A", "B", "C");
Set
Set<String> friends = Set.of("A", "B", "C");
map
// 10개 이하의 키와 값 쌍을 가진 작은 맵 생성
Map<String, Integer> ageOfFriends = Map.of("A", 30, "B", 25, "C", 28);
// 10개 이상의 키와 값 쌍을 가진 맵 생성
Map<String, Integer> ageOfFriends = Map.ofEntries(entry("A", 30), entry("B", 25), entry("C", 28));
List & Set 처리
Java 8에서는 List, Set 인터페이스에 removeIf(), replaceAll(), sort() 메서드가 추가되었다.
removeIf()
프레디케이트를 만족하는 요소를 제거한다.
transaction.removeIf(transaction -> Character.isDigit(transaction.getReferenceCode().charAt(0)));
replaceAll()
리스트에서 이용할 수 있는 기능으로 요소를 변경한다.
referenceCodes.replaceAll(code -> Character.toUpperCase(code.charAt(0)) + code.substring(1));
Map 처리
Java 8에서는 Map 인터페이스에 몇 가지 디폴트 메서드가 추가되었다.
forEach()
Map<String, Integer> ageOfFriends = Map.of("A", 30, "B", 25, "C", 28);
// 사람의 이름과 나이 출력
for (Map.Entry<String, Integer> entry : ageOfFriends.entrySet()) {
String friends = entry.getKey();
Integer age = entry.getValue();
System.out.println(friend + " is " + age + " years old");
}
// 간결
ageOfFriends.forEach((froend, age) -> System.out.println(friend + " is " + age + " years old"));
Entry.comparingByValue(), Entry.comparingByKey()
Map<String, Integer> ageOfFriends = Map.of("A", 30, "B", 25, "C", 28);
// comparingByKey() : 사람을 이름으로 정렬
ageOfFriends.entrySet().stream()
.sorted(Entry.comparingByKey())
.forEachOrdered(System.out::println);
// comparingByValue() : 사람을 나이로 정렬
ageOfFriends.entrySet().stream()
.sorted(Entry.comparingByValue())
.forEachOrdered(System.out::println);
getOrDefalut()
// Map<String, Integer> ageOfFriends = Map.of("A", 30, "B", 25, "C", 28);
// 존재하는 Key A -> return 30
ageOfFriends.getOrDefault("A", 10)
# 존재하지 않는 Key Z -> return 10
ageOfFriends.getOrDefault("Z", 10)
정리
위에 설명한 메서드 외에도 computeIfAbsent(), remove(), pushAll() 등 다양한 메서드가 제공되고 있다.
추가된 기능이 무조건 옳고 좋은 건 아니고, 더 좋은 써드파티도 존재하니 적절하게 사용하는 것이 좋아 보인다.
또, 굳이 외울 필요는 없을 듯 하다. 기능 존재 정도만 알아두고, 필요시 구글링 해서 사용하는 정도만....ㅎ
728x90
반응형
LIST
'Study > Modern Java8 in Action' 카테고리의 다른 글
[Java in Action] Default Method, Static Method 란? (0) | 2021.01.17 |
---|---|
[Java in Action] 병렬 데이터 처리(Parallel Stream)와 성능 (0) | 2021.01.17 |
[Java in Action] Stream 스트림이란 ? (0) | 2021.01.17 |
[Java in Action] 람다, 함수형 인터페이스, 메서드 레퍼런스 (0) | 2021.01.17 |
[Java in Action] 동작 파라미터화 적용하여 리팩토링 (0) | 2020.03.17 |