[JAVA] Java8의 Stream 이란?
1. Stream 이란?
Java8부터 지원하는 Stream은 컬렉션, 배열 등에 저장되어 있는 요소들을 하나씩 참조하며 반복적인 처리를 가능하게 하는 기능이다. Stream을 사용한다면 불필요한 for문과 if문 등의 분기처리를 쓰지 않고 깔끔하고 직관적인 코드로 변형할 수 있다.
2. Stream 특징
1) Stream은 원본 데이터를 변경하지 않는다.
- 원본 데이터로부터 데이터를 읽기만 할 뿐, 변경은 하지 않는다.
2) Stream은 일회용이다.
- 한 번 사용하면 닫혀서 재사용이 불가능하다. 필요시 정렬된 결과를 컬렉션이나 배열에 담아 반환할 수 있다.
3) Stream은 작업을 내부 반복으로 처리한다.
- 내부 반복을 통해 간결한 코드를 작성할 수 있다. (내부반복이란 반복문을 메서드 내부에 숨긴다는 의미)
3. Stream의 구조
데이터소스객체집합.Stream생성().중개연산().최종연산()
Stream의 구조는 크게 3가지로 볼 수 있다. 중개연산은 연산 결과를 Stream으로 반환하여 연속적으로 연결하여 사용이 가능하다.
1) Stream 생성
2) 중개 연산
3) 최종 연산
List<String> list =
Arrays.asList("a1", "a2", "b1", "b2", "c2", "c1", "c3");
Stream<String> filtered = list.stream()
.filter(s -> s.startsWith("c"))
.forEach(e -> System.out.println(e));
/*
//Stream<String> stream1 = list.stream();
//Stream<String> filtered = stream1.filter(s -> s.startsWith("c"));
//filtered.forEach(System.out::println);
*/
- filter(조건): 조건을 만족하는 Stream 리턴
4. IntStream의 range(), rangeClosed()
- range, rangeClose의 차이는 끝 값 포함 여부
- 특정 범위의 숫자를 차례대로 생성해주는 기능
1) range(s, e): s ~ (e - 1) ➜ 끝 값 포함X
2) rangeClosed(s, e): s ~ e ➜ 끝 값 포함O
5. Stream 을 기본형 Stream으로 변환
1) mapToObj(): IntStream ➜ Stream
2) mapToInt(): Stream ➜ IntStream
6. Stream Collect
1) Stream 모든 아이템을 1개의 String으로
.collect(Collectors.joining());
[참고] https://ahndding.tistory.com/23
[Java] Java 8 Stream이란?
Stream이란? Java8부터 지원하는 Stream은 컬렉션, 배열등에 대해 저장되어있는 요소들을 하나씩 참조하며 반복적인 처리를 가능케하는 기능이다. 이러한 Stream을 이용한다면 불필요한 for문과 그 안
ahndding.tistory.com
[참고] https://codechacha.com/ko/stream-filter/
Java8 Stream의 filter와 map, flatMap 사용 방법 및 예제
Java8의 Stream filter는 말 그대로 특정조건으로 스트림의 컨텐츠를 필터링하고 새로운 스트림을 생성합니다. map은 각각의 item을 변경하여 새로운 컨텐츠를 생성하는 기능입니다. FlatMap은 여러개의
codechacha.com
[참고] https://amagrammer91.tistory.com/64
IntStream, LongStream의 range와 rangeClosed 차이
기본형 특화 스트림인 IntStream과 LongStream에는 정적 메서드인 range와 rangeClosed가 있다. 특정 범위의 숫자를 차례대로 생성해주는 기능을 가진다. 두 메서드 모두 시작 값과 종료 값을 인수로 받는
amagrammer91.tistory.com
[참고] https://ryan-han.com/post/dev/java-stream/
자바의 정석 - 스트림(Stream) | Integerous DevLog
자바의 정석 - 스트림(Stream) 2018/11/29 자바의 정석(남궁성 저) 2권 학습내용 정리 1. 스트림(Stream) 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드들을 정의해 놓았
ryan-han.com
[참고] https://codechacha.com/ko/java8-stream-collect/
Java8의 Stream Collect 사용 방법 및 예제
Collect는 Stream의 데이터를 변형 등의 처리를 하고 원하는 자료형으로 변환해 줍니다. List 또는 Set 자료형으로 변환하거나, joining 또는 Sorting하여 1개의 객체를 리턴하기도 합니다. 또는 아이템들
codechacha.com