공부하는 블로그

Java 8 Stream 본문

Develop/JAVA

Java 8 Stream

모아&모지리 2017. 11. 9. 17:03
값으로 스트림 만들기
Stream<String> stream = Stream.of("Java 8 ", "Lambdas ", "In ", "Action");
 
stream().count()는 long 타입의 결과를 반환한다. (파일로 스트림을 만들어 반환하면 크기가 엄청나게 커질 수 있으므로 int 가 아닌 long 이다.)
* long 보다 큰 결과가 나올 경우는 BigInteger 라는 것을 쓴다.
 
스트림의 카운트 세기
.count();
또는 .collect(Collectors.counting());
 
collect를 사용하여 총 합 조회하기
long calories = menu.stream().collect(Collectors.summingLong(dish -> dish.getCalories()));
 
collect를 사용하여 가장 작은 값 조회
Optional<Dish> minCalory = menu.stream()
  .collect(
   Collectors.minBy(Comparator.comparingInt(Dish::getCalories)
  ));
 
optional 객체의 .get() 을 호출하면
 
* 시험에 함수형 인터페이스 종류 6개 있다고 한 것(Predicate<T>, BiPredicate<L,R>, Consumer<T>, BiConsumer<T,U>, Function<T,R>, Function<T,R,U>)과 optional 시험에 나옴
 
// 모든 요리의 평균 칼로리를 조회하기
Double avgCalory = menu.stream()
   .collect(Collectors.averagingInt(Dish::getCalories));
System.out.println("모든 요리의 평균 칼로리 : " + avgCalory);
 
// 모든 메뉴의 이름을 ,로 구분하여 출력
String menus = menu.stream()
  .map(dish -> dish.getName())
  .collect(Collectors.joining(","));
System.out.println(menus);
 
import static을 쓰면 Collectors 에 있는 static 메서드를 그냥 가져올 수 있다.
ex) import static java.util.stream.Collectors.*;
import static java.util.Comparator.*;
 
// 그룹핑 하기
Map<Dish.Type, List<Dish>> dishesByType = menu.stream().collect(Collectors.groupingBy(Dish::getType));


'Develop > JAVA' 카테고리의 다른 글

컬렉션 프레임워크 (Collection Framework) - ArrayList  (0) 2017.12.12
IntelliJ 사용하기  (0) 2017.11.16
JAVA 8 Map / FlatMap  (0) 2017.11.01
JAVA 8 Collect  (0) 2017.11.01
JAVA 8 Stream  (0) 2017.10.31