728x90
https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html
1. 자바 8부터 컬렉션의 요소를 람다식으로 처리할 수 있게 해주는 반복자임.
List<String> list = Arrays.asList("JSP", "PHP");
// Iterator 반복자를 이용한 방법
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String str = iterator.next();
System.out.println(str);
}
// for문을 이용한 방법
for (int i=0; i<list.size(); i++) {
String str = list.get(i);
System.out.println(str);
}
// 자바 8 이후 스트림을 이용한 방법
Stream<String> stream = list.stream();
stream.forEach(str -> {
System.out.println(str);
});
2. 내부 반복자 사용으로 병렬 처리가 쉬움.
// parallelStream() 메소드 사용으로 병렬 처리됨.
Stream<String> stream = list.parallelStream();
stream.forEach(str -> {
System.out.println(str + " : " + Thread.currentThread().getName());
});
3. 중간 처리와 최종 처리 작업 수행이 가능함.
중간 처리 : 필터링, 매핑, 정렬을 수행.
필터링 :
매핑 : 스트림의 요소를 다른 요소로 대체하는 작업. flatMapXXX(), mapXXX(), asXXXStream(), boxed()
최종 처리 : 반복, 카운팅, 평균, 총합 등 집계 처리를 수행.
List<String> listCityName = Arrays.asList("서울", "대전", "부산", "천안", "인천", "서울", "부산");
listCityName.stream()
.distinct() // 중간처리 : 중복제거
.forEach(s -> System.out.println(s));
(결과)
서울
대전
부산
천안
인천
listCityName.stream()
.filter(s -> s.equals("서울")) // 중간처리 : 조건 필터링
.forEach(s -> System.out.println(s));
(결과)
서울
서울
listCityName.stream()
.distinct() // 중간처리 : 중복제거
.filter(s -> s.equals("서울")) // 중간처리 : 조건 필터링
.forEach(s -> System.out.println(s));
(결과)
서울
728x90
'프로그래밍 > Java' 카테고리의 다른 글
이클립스 SVN LOCK 해제하기 (0) | 2023.01.18 |
---|---|
이클립스, STS 메모리 설정 (0) | 2023.01.18 |
람다식(Lambda Expressions) (0) | 2021.11.09 |