[java] 람다 표현식을 사용하여 스트림을 어떻게 통계를 낼 수 있나요?
Java 8부터 도입된 람다 표현식과 스트림을 사용하면 데이터를 효과적으로 처리하고 통계를 쉽게 얻을 수 있습니다. 람다 표현식을 사용하여 간결한 코드를 작성하고, 스트림을 활용하여 데이터를 처리하면서 통계 정보를 추출할 수 있습니다.
- 리스트를 스트림으로 변환하기:
리스트를 스트림으로 변환하여 데이터를 처리합니다.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> numberStream = numbers.stream();
- 스트림을 이용한 통계 연산:
스트림의 다양한 메소드를 이용하여 통계를 계산합니다.
- 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());
- 필터링과 매핑:
스트림을 통해 데이터를 필터링하고 매핑하여 원하는 통계를 얻을 수 있습니다.
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());
위와 같이 람다 표현식과 스트림을 사용하여 데이터를 효과적으로 처리하고 통계 정보를 추출할 수 있습니다. 이를 통해 코드의 가독성을 높이고 간결한 통계 계산 코드를 작성할 수 있습니다.
참고 자료
- Oracle Java Documentation: Java Stream API
- Baeldung: A Guide to Java Streams and Collectors