스트림은 자바 API에 새로 추가된 기능으로, 스트림을 이용하면 선언형(즉, 데이터를 처리하는 임시 구현 코드 대신 질의로 표현할 수 있다.)// 기존 자바 코드
// 누적 자료 필터링
List<Dish> lowCaloricDishes = new ArrayList<>();
for(Dish d : menu) {
  lowCaloricDishes.add(d);
}
// 익명 클래스로 요리 정렬
Collections.sort(lowCaloricDishes, new Comparator<Dish>() {
  public int compare(Dish dl, Dish d2) {
    return Integer.compare(dl.getCalories(), d2.getCalories());
  }
});
// 정렬된 리스트를 처리하면서 요리 이름 선택
List(String> lowCaloricDishesName = new ArrayList<>();
for(Dish d : lowCaloricDishes) {
  lowCaloricDishesName.add(d.getName());
}
// 최신 자바 8 코드
List<String> lowCaloricDishesName =
                menu.stream()
                        .filter(d -> d.getCalories() < 400)
                        .sorted(comparing(Dish::getCalories))
                        .map(Dish::getName)
                        .collect(toList());            
파이프라인
filter