Java

[Java] Stream

bornsoon 2024. 10. 23. 10:12

Java 8에 추가된 Stream을 쓰면,

람다식 표기법을 활용해서 코드를 함축적으로 표현할 수 있고 병렬처리도 가능하게 된다.

추가로 stream을 사용해 코드를 함축적으로 작성하게 되면,

코드의 변수 등이 외부에 노출되지 않아 도중에 변수에 다른 값이 대입되는 등의 외부 노출 부작용(Side Effect)를 방지할 수도 있게 된다.

 

Stream은 배열 Array 타입이나 Collection 인터페이스의 List나 Set 타입에도 쓸 수 있다.

 

다음은 Array와 List의 stream 메소드를 활용한 예이다.

import java.util.Arrays;

// 필터 filter
// 누적계산 reduce
Integer sum1 = Arrays.stream(num).filter((a) -> a%2 == 0).reduce(0, (total,b) -> total + b);
System.out.println("총합: " + sum1);

// 최대값
System.out.println(Arrays.stream(num).max().getAsInt());
// 최소값
System.out.println(Arrays.stream(num).min().getAsInt());
// 총합
System.out.println(Arrays.stream(num).sum());


List<Integer> datas = Arrays.asList(92, 81, 78, 88, 96, 100, 55, 94, 100);

// for-each
datas.stream().forEach(System.out::println);
// 필터
datas.stream().filter((x)-> x > 90).forEach(System.out::println);
728x90