728x90
자바의 정석 챕터 14를 읽고 정리
2. 스트림
2.1 스트림이란
- 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메소드들을 정의 해놓은 것.
- 코드의 재사용성을 높여줌.
String[] strArr = {"aaa", "bbb", "ccc"};
List<String> strList = Arrays.asList(strArr);
// 스트림 생성
Stream<String> strStream2 = Arrays.stream(strArr);
Stream<String> strStream1 = strList.stream();
// 다른 데이터 소스지만, 이를 정렬하고 출력하는 방법은 동일하다.
strStream1.sorted().forEach(System.out::println);
strStream2.sorted().forEach(System.out::println);
스트림은 데이터 소스를 변경하지 않는다.
- 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐, 변경하지 않는다.
스트림은 일회용이다.
- 스트림은 Iterator처럼 일회용이다. 필요하면 스트림을 다시 생성해야한다.
스트림의 연산
- 스트림은 중간 연산, 최종 연산으로 분류할 수있다.
- 중간 연산은 연산결과를 스트림으로 반환하기 때문에 연속해서 중간 연산을 할 수 있다.
중간 연산 연산결과가 스트림인 연산. 스트림에 연속해서 중간 연산할 수 있음
최종 연산 연산결과가 스트림이 아닌 연산. 스트림의 요소를 소모하므로 단 한번만 가능
stream.distinct().limit(5).sorted().forEach(System.out::println)
지연된 연산
- 스트림의 최종 연산이 수행되기 전까지 중간 연산은 수행되지 않는다.
728x90
'개발 > Java & Kotlin' 카테고리의 다른 글
[Spring] 스프링 DI (2) (0) | 2022.06.29 |
---|---|
[Spring] 스프링 DI (1) (0) | 2022.06.29 |
[Spring] @ResponseBody가 null만 가져올 때 (0) | 2022.06.28 |
[Java] 람다와 스트림(1) (0) | 2022.06.28 |
[Spring] @PutMapping, @DeleteMapping 403 Forbidden 에러 (0) | 2022.06.28 |