-
[JAVA] stream 기본집계Java 2022. 11. 11. 22:42
집계(Aggregate)
Stream 배열을 만든 뒤, 이것의 카운팅, 합계, 평균값, 최대값, 최소값 등과 같이 하나의 값을 산출하는 것을 말한다. 대량의 데이터를 가공해서 축소하는 리덕션(Reduction)이라고 볼 수 있다.
스트림에서 제공하는 기본 집계
스트림
집계 메서드에서는 리턴 값으로 OptionalXXX클래스를 리턴한다.
OptionalXXX는 자바8 java.util 패키지의 Optional, OptionalDouble, OptionalInt, OptionalLong 클래스타입을 말한다. (value-based class)라고 썻지만 아직까진 잘 모르겠다 ㅎㅎ;;
이 객체에서 값을 얻기 위해서는 get(), getAsDouble(), getAsInt(), getAsLong()을 호출하면 된다.
public static void main(String[] args){ int[] intArr = {1, 2, 3, 4, 5}; // count() 요소 개수 반환 long count = Arrays.stream(intArr) .filter(n -> n%2 == 0) .count(); System.out.println(count); // sum() 요소 총합 반환 long sum = Arrays.stream(intArr) .filter(n -> n%2 == 0) .sum(); System.out.println(sum); // average() 요소 평균 반환 double avg = Arrays.stream(intArr) .filter(n -> n%2 == 0) .average() .getAsDouble(); System.out.println(avg); // max() 최대값 반환 int max = Arrays.stream(intArr) .filter(n -> n%2 == 0) .max() .getAsInt(); System.out.println(max); // min() 최소값 반환 int min = Arrays.stream(intArr) .filter(n -> n%2 == 0) .min() .getAsInt(); System.out.println(min); // findFirst() 첫 번째 요소 반환 int first = Arrays.stream(intArr) .filter(n -> n%2 == 0) .findFirst() .getAsInt(); System.out.println(first); }
❓ 기본자료형인 long, double 이것들도 int로 바꿀 수 있을 것 같은데 안되는 이유가 뭘까?
혹시몰라 적어놓은 메서드
reduce
Integer num = integerStream.filter((num)-> num % 2 == 1) .reduce((x, y) -> Integer.sum(x,y)).get();
참조
'Java' 카테고리의 다른 글
String.format()? (0) 2022.11.21 ☑️[JAVA] int vs Intager / boolean vs Boolean (0) 2022.11.17 [java]IntStream.of()를 이용한 평균값 구하기 (0) 2022.11.11 [JAVA] Stream을 만드는 방법들 (0) 2022.11.11 Pair.of()를 사용해보장 (0) 2022.11.11