https://github.com/BanditBool2/ReadingRecord/issues/40
class CaloricLevel {
private String name;
public CaloricLevel(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
List<Dish> menu = ...
Map<CaloricLevel, List<Dish>> dishesByCaloricLevel =
menu.stream().collect(Collectors.groupingBy(dish -> new CaloricLevel(dish.getCaloricLevel().getName())));
groupBy() 메서드는 특정 키를 기준으로 그룹화된 맵(Map)을 반환합니다.
Map<CaloricLevel, List<Dish>> dishesByCaloricLevel = dishes.stream()
.collect(Collectors.groupingBy(dish -> {
if (dish.getCalories() <= 400) {
return CaloricLevel.DIET;
} else if (dish.getCalories() <= 700) {
return CaloricLevel.NORMAL;
} else {
return CaloricLevel.FAT;
}
}));
groupingBy(Dish::getType)를 사용해 그룹화를 하는 것을 보여주는 챕터였다.
다수준 그룹화
→ 2차원 맵으로 groupingBy를 2번 사용하기
컬렉터 결과를 다른 형식에 적용하기
→collectingAndThen