[java] 람다 표현식을 사용하여 스트림을 어떻게 통계를 낼 수 있나요?

Java 8부터 도입된 람다 표현식과 스트림을 사용하면 데이터를 효과적으로 처리하고 통계를 쉽게 얻을 수 있습니다. 람다 표현식을 사용하여 간결한 코드를 작성하고, 스트림을 활용하여 데이터를 처리하면서 통계 정보를 추출할 수 있습니다.

  1. 리스트를 스트림으로 변환하기: 리스트를 스트림으로 변환하여 데이터를 처리합니다.
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    Stream<Integer> numberStream = numbers.stream();
    
  2. 스트림을 이용한 통계 연산: 스트림의 다양한 메소드를 이용하여 통계를 계산합니다.
    • count(): 요소 개수
    • sum(): 합계
    • average(): 평균
    • min(), max(): 최솟값, 최댓값
      List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
      IntSummaryStatistics stats = numbers.stream().mapToInt(x -> x).summaryStatistics();
      System.out.println("Count: " + stats.getCount());
      System.out.println("Sum: " + stats.getSum());
      System.out.println("Average: " + stats.getAverage());
      System.out.println("Min: " + stats.getMin());
      System.out.println("Max: " + stats.getMax());
      
  3. 필터링과 매핑: 스트림을 통해 데이터를 필터링하고 매핑하여 원하는 통계를 얻을 수 있습니다.
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David", "Eve");
    IntSummaryStatistics nameLengthStats = names.stream()
           .filter(name -> name.length() > 4)
           .map(String::length)
           .mapToInt(x -> x)
           .summaryStatistics();
    System.out.println("Count: " + nameLengthStats.getCount());
    System.out.println("Sum: " + nameLengthStats.getSum());
    System.out.println("Average: " + nameLengthStats.getAverage());
    System.out.println("Min: " + nameLengthStats.getMin());
    System.out.println("Max: " + nameLengthStats.getMax());
    

위와 같이 람다 표현식과 스트림을 사용하여 데이터를 효과적으로 처리하고 통계 정보를 추출할 수 있습니다. 이를 통해 코드의 가독성을 높이고 간결한 통계 계산 코드를 작성할 수 있습니다.

참고 자료