Stream(스트림) 정리
특징
- 원본 데이터 소스를 변경하지는 않는다
List<Integer> list = Array.asList(3,1,5,4,2);
List<Integer> sortedList = list.stream().sorted() // list를 정렬하고
.collect(Collectors.toList()); // 새로운 List에 저장
System.out.println(list); // 3,1,5,4,2
System.out.println(sotredList); // 1,2,3,4,5
- Iterator처럼 일회용이라서 사용되면 소모됨
strStream.forEach(System.out::println); // 모든 요소를 화면에 출력(최종연산)
int numOfStr = stream.count(); // 에러발생..이미 스트림은 사용된 이후라서닫힘
// 다시 사용할려면 새로운 스트림 생성해야됨
- 최종 연산 전까지 중간연산은 수행하지 않는다
(즉, 중간에 distinct, limit, sorted 같은 멤버는 최종연산 전까지는 그냥 그렇게 하겠다고 암시하는 것
IntStream intStream = new Random().ints(1,46) // 1~45범위의 무한 스트림
intStream.distinct().limit(6).sorted() // 중간 연산(중복제거/6개로자르고/정렬)
.forEach(i->System.out.print(i+",")); // 최종 연산
- 스트림은 작업을 내부 반복으로 처리한다.
stream.forEach(System.out::println); //for문에서 출력을 이런식으로 간결하게
- 스트림의 작업을 병렬로 처리 - 병렬스트림
(큰 작업을 여러 쓰레드로 나누어 처리)
Stream<String> strStream = Stream.of("dd","aaa""CC","cc","b");
int sum = strStream.parallel() // 병렬 스트림으로 전환(속성만 변경)
.mapToInt(s -> s.length().sum(); // 모든 문자열의 길이의 합
※출처: 남궁성의 정석코딩(유튜브)
Author And Source
이 문제에 관하여(Stream(스트림) 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sunullo/Stream스트림-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)