728x90
- (Java 8이상)스트림(Stream) 이란?
- 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것이다.
- 스트림이 제공하는 기능 - 중간 연산과 최종 연산
- 중간 연산 - 연산결과가 스트림인 연산. 반복적으로 적용 가능하다.
- 최종 연산 - 연산결과가 스트림이 아닌 연산. 스트림의 요소를 소모하므로 한번만 적용가능하다.
- 스트림의 구조
- 스트림의 특징
- 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다.
- 스트림은 Iterator처럼 일회용이다.
- 최종 연산 전까지 중간연산이 수행되지 않는다. - 지연된 연산
List<Integer> list = Arrays.asList(4, 2, 5, 1, 3);
List<Integer> sortedList = list.stream().sorted()
.collect(Collectors.toList());
System.out.println(list);
System.out.println(sortedList);
IntStream intStream = new Random().ints(1, 46);
intStream.distinct().limit(6).sorted(). //중간 연산
forEach(i->System.out.print(i+",")); //최종 연산
- 스트림 중간 연산의 종류
- 스트림 자르기 - skip(), limit()
- 스트림의 요소 걸러내기 - filter(), distinct()
IntStream intStream = IntStream.rangeClosed(1, 10);
intStream.filter(i->i%2==0).forEach(System.out::print); //2의 배수만 출력
-
- 스트림 정렬하기 - sorted()
- 스트림의 요소 변환하기 - map()
Stream<File> fileStream = Stream.of(new File("FileEx1.java")
, new File("FileEx2.java")
, new File("FileEx3.java"));
Stream<String> filenameStream = fileStream.map(File::getName); //File 스트림을 String 스트림으로 변환
filenameStream.forEach(System.out::println); //File 스트림의 이름을 출력
728x90
'JAVA' 카테고리의 다른 글
[디자인 패턴]Builder pattern 이란? (0) | 2022.03.22 |
---|---|
Java 8 LocalDateTime 직렬화 역직렬화 오류 (0) | 2022.03.02 |
람다 함수(with 메서드 참조) (0) | 2022.02.14 |
자바 람다함수(with 함수형 인터페이스) (0) | 2022.02.14 |
람다(Lambda) 함수 사용법(with collection 함수) (0) | 2022.02.14 |