[Java] List/배열값 한줄로 SUM

    기존의 많은 언어들이 제공하는 SUM 기능이 자바에는 없지만 최근에 stream으로 구현하는 방법이 나왔다. 기존의 방식은 for문으로 loop을 돌리면서 한건씩 넣는 방식이었으나, stream을 사용하면 매우 람다 함수를 써서 쉽게 구현이 된다. 그러나 람다 함수가 매우 쉽다가 마구잡이로 사용하면 안되는 것이, 속도적인 측면에서 부정적일 수 있다. 그러니 사이트에 맞게 써야 할 것이다. (일반적으로 stream 람다 방식이 loop 방식보다 속도적인 측면에서 부정적이다)



    List<Integer> 값을 합치는 방법


    integer로 구성된 list는 아래와 같이 stream 기법을 사용하면 된다.

    리스트.stream().mapToInt(Integer::intValue).sum();


    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void main(String[] args) throws ParseException {
            List<Integer> list = new ArrayList<Integer> ();
            list.add(1);
            list.add(250);
            list.add(1000);
            
            int sum = list.stream().mapToInt(Integer::intValue).sum();
            System.out.println(sum);
    }
    cs

    결과

    1251



    int[] 값을 합치는 방법


    배열을 합치는 방법은 list와 약간 다르다. 바로 별도의 클래스를 선언해야 하는데 IntStream(java.util.stream.IntStream)이라는 클래스를 선언해야 한다.


    IntStream.of(배열).sum()


    1
    2
    3
    4
    5
    6
    public static void main(String[] args) throws ParseException {
        int[] arr = {1,2,3,10};
        
        int sum = IntStream.of(arr).sum();
        System.out.println(sum);
    }
    cs


    결과

    16



    위와 같이 간단하게 sum을 할 수 있는 방법이 존재하니, 성능적인 부분에 대한 고려가 필요없을 경우 사용하면 좋을 것이다. 



    반응형

    댓글

    Designed by JB FACTORY