Stream
- 자바 8에서 추가된 스트림은 람다를 활용할 수 있는 기술 중의 하나.
- 스트림은 데이터의 흐름
- 자바에서 제공하는 Collection 인터페이스에는 stream() 메소드가 정의되어있고, 이를 구현한 List 와 Set 등의 컬렉션 에서도 stream 메소드를 사용할 수 있다.
Stream 특징
1. Stream 은 데이터를 변경하지 않는다.
- 원본데이터로부터 데이터를 읽기만 할 뿐, 원본 데이터 자체를 변경하진 않음
2. Stream은 일회용이다.
-Stream은 한번 사용하면 닫혀서 재사용이 불가능하다.
3. Stream은 작업을 내부 반복으로 처리한다.
-Stream을 이용한 작업이 간결한 이유는 바로 내부 반복이다. 즉, 반복문이 코드 상 노출되지 않는다.
코드 예제
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(4);
list.add(2);
list.add(3);
list.add(1);
// 컬렉션에서 스트림 생성
Stream<Integer> stream = list.stream();
// forEach() 메소드를 이용한 스트림 요소의 순차 접근
stream.forEach(System.out::println);
스트림의 중개 연산
ex)Filtering
-Stream 에서 조건에 맞는 데이터만을 정제하여 더 작은 컬렉션을 만드는 연산.
IntStream stream2 = IntStream.of(7, 5, 5, 2, 1, 2, 3, 5, 4, 6);
// 스트림에서 홀수만을 골라냄.
stream2.filter(n -> n % 2 != 0).forEach(e -> System.out.print(e + " "));
실행결과
7 5 5 1 3 5
스트림의 최종 연산
중개 연산을 통해 변환된 스트림은 마지막으로 최종 연산을 통해 필터링된다.
종류
1. 요소의 출력 : forEach()
2. 요소의 소모 : reduce()
3. 요소의 검색 : findFirst(), findAny()
4. 요소의 검사 : anyMatch(), allMatch(), noneMatch()
5. 요소의 통계 : count(), min(), max()
6. 요소의 연산 : sum(), average()
7. 요소의 수집 : collect()
ex)forEach()
코드예제
Stream<String> stream = Stream.of("넷", "둘", "셋", "하나");
stream.forEach(System.out::println);
실행결과
넷
둘
셋
하나
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] JDBC 템플릿 공부 (0) | 2022.03.18 |
---|---|
[java spring] Database "C:/~/test" not found, either pre-create~~ 에러 해결 (2) | 2022.03.13 |
[Android java] 이미지 fade in fade out 애니메이션 주는 방법 (0) | 2022.03.08 |
[java spring] MVC 모델 공부 (0) | 2022.03.06 |
[java spring boot] Please set the JAVA_HOME variable in your environment to match thelocation of your Java installation. 에러 해결 (0) | 2022.03.05 |