[Java in Action] Collection API (List & Map & Set)

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