ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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] Stream 기본집계

    스트림 사용해서 max,min 찾기

     

    '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
Designed by Tistory.