Modern Java in Action - Ch.4

참고: 책 - Modern Java in Action

Ch 4. 스트림 소개

List<Dish> lowCaloricDishes = new ArrayList<>(); //가비지
//1) filter
for (Dish dish : menu) {
    if (dish.getCalories() < 400) {
        lowCaloricDishes.add(dish);
    }
}
//2) sorted
Collections.sort(lowCaloricDishes, new Comparator<Dish>() {
    @Override
    public int compare(Dish dish1, Dish dish2) {
        return Integer.compare(dish1.getCalories(), dish2.getCalories());
    }
});
//3) map -> 4) collect
List<String> lowCaloriesDishesNameBefore = new ArrayList<>();
for (Dish dish : lowCaloricDishes) {
    lowCaloriesDishesNameBefore.add(dish.getName());
}
//Stream으로 구현하면?
List<String> lowCaloriesDishesName = menu.stream()
        .filter(d -> d.getCalories() < 400)
        .sorted(comparing(Dish::getCalories))
        .map(Dish::getName)
        .collect(Collectors.toList());

스트림이란?

스트림 API의 특징

스크린샷, 2021-09-03 12-17-35


정의

데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소



스트림(Stream)과 컬렉션(Collection)

스크린샷, 2021-09-03 12-17-51



스트림의 연산

스크린샷, 2021-09-03 12-18-00

스크린샷, 2021-09-03 12-18-08 스크린샷, 2021-09-03 12-18-15 스크린샷, 2021-09-03 12-18-22 스크린샷, 2021-09-03 12-18-28 스크린샷, 2021-09-03 12-18-34