JAVA Stream 기본
Stream이란?
컬렉션, 배열등의 저장 요소를 하나씩 참조하며 함수형 인터페이스(람다식)를 적용하며 반복적으로 처리할 수 있도록 해준다.
파이프 라인 방식의 코딩이 가능하도록 한다
간단 코드로 맛보기
// 리스트 출력
// 기존 방식
for (Integer num : list) {
System.out.println(num);
}
// Stream 사용
list.stream().forEach(System.out::println);
// 짝수 출력
// 기존 방식
for (Integer num : list) {
if(num % 2 == 0) System.out.println(num);
}
// Stream 사용
list.stream().filter(n -> n % 2 == 0).forEach(System.out::println);
왜 쓰는가?
불필요하게 사용되는 반복문 조건문을 줄일수 있다
코드가 길어질 경우 알아보기가 쉽다.
병렬 처리가 간편하다
stream()을 parallelStream()으로 변경하면 병렬 처리가 된다.
예제
짝수 리스트 생성 후 출력
// 기존 방식
List<Integer> evenList = new ArrayList<>();
for (Integer num : list) {
if(num % 2 == 0){
evenList.add(num);
}
}
for (Integer even : evenList) {
System.out.println(even);
}
// Stream 사용
List<Integer> evenList2 = list.stream().filter(n -> n % 2 == 0).collect(Collectors.toList());
evenList2.stream().forEach(System.out::println);
출처: https://lovon.tistory.com/2?category=862727 [Java 개발 블로그]
'JAVA BASIC > Lambda&Stream(람다와 스트림)' 카테고리의 다른 글
[JAVA] Stream Collectors - 2. 그룹화 (groupingBy) (0) | 2022.10.13 |
---|---|
[JAVA] Stream Collectors - 1. 리듀싱(reducing) (1) | 2022.10.13 |
[JAVA]숫자형 스트림 (IntStream, DoubleStream ..) (0) | 2022.10.13 |
[JAVA]Stream 리듀싱 활용 (0) | 2022.10.13 |
[JAVA]Stream 검색과 매칭 (1) | 2022.10.05 |