charminseok
[Java] Stream 본문
객체지향 언어인 자바는 함수형 프로그래밍을 지원하기위해 자바8부터 stream API, 람다식 등이 추가되었다. Stream API를 사용하면 기존 for문을 사용하지 않고 함수를 사용해 컬렉션 데이터를 처리할 수 있다.
String[] words = {"java", "python", "javascript", "C++"};
// 1. 4글자 이상 단어 출력
for (String s : words) {
if (s.length() > 4) {
System.out.println(s);
}
}
// 2. 정렬 후 출력
Arrays.sort(words);
for (String s : words) {
System.out.println(s);
}
위의 코드처럼 for문을 사용하는 것보다 더 간단하고 가독성있게 작성할 수 있고 원본 데이터(words)를 변형하지 않고 로직을 수행할 수 있다.
String[] words = {"java", "python", "javascript", "C++"};
// 1. 4글자 이상 단어 출력
Arrays.stream(words).filter(str -> str.length() > 4).forEach(System.out::println);
// 2. 정렬 후 출력
Arrays.stream(words).sorted().forEach(System.out::println);
Stream API는 원본 데이터를 복사해 stream을 생성한다. 그렇기 때문에 정렬이나 필터링을 하더라도 원본 데이터는 유지하면서 stream 내부에서 작업을 수행할 수 있는 것이다.
스트림은 크게 세가지로 작업한다.
1. 생성하기
- 배열 / 컬렉션 / 빈 스트림
- Stream.builder() / Stream.generate() / Stream.iterate()
- 기본 타입형 / String / 파일 스트림
- 병렬 스트림 / 스트림 연결하기
2. 가공하기
- Filtering
- Mapping
- Sorting
- Iterating
3. 결과
- Calculating
- Reduction
- Collecting
- Matching
- Iterating
'JAVA' 카테고리의 다른 글
[Java Test] 테스트 (0) | 2022.09.03 |
---|---|
[Java] concurrentHashMap (0) | 2022.05.01 |
[Java] 자바 동기화 컬렉션(Synchronized Collection) (0) | 2022.04.25 |
[Java] 동등성, 동일성 (0) | 2022.04.11 |
[Java] 싱글톤 (0) | 2022.04.10 |