[Java8] 스트림 소개

스트림 소개

목차

스트림이란 무엇인가?

// 기존 자바 코드
// 누적 자료 필터링
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());            

파이프라인

스트림 시작하기

스티림 시작하기

스트림과 컬렉션

스트림과 컬렉션

딱 한 번만 탐색할 수 있다.

List(String) title = Arrays.asList("Java8", "In", "Action");
Stream(String) s = title.stream();
s.forEach(System.out::println); // title 단어 출력
s.forEach(System.out::println); // Excepsion 발생.

외부 반복과 내부 반복

스트림 연산

중간 연산과 최종 연산

중간 연산

최종 연산

스트림 이용하기

  • 질의를 수행할 (컬렉션 같은) 데이터 소스
  • 스티림 파이프라인을 구성할 중간 연산 연결
  • 스트림 파이프라인을 실행하고 결과를 만들 최종 연산

중간 연산과 최종 연산-2

요약