728x90
전체 요소중에서 내가 원하는 것만 뽑아낼 수 있습니다
filter은 스트림 내 요소들을 하나씩 평가해서 걸러내는 작업입니다.
Stream<String> stream =
names.stream()
.filer(name -> name.contains("a"));
Map
map은 스트림 내 요소들을 하나씩 특정한 값으로 변환해줍니다.이떄 값을 변환하기 위해 람다를 인자로 받습니다.
스트림에 들어간 값이 input이 되어서 특정 로직을 거친 후 output이 되어 리턴되는 새로운 스트림에 담기게 됩니다. 이러한 작업을 매핑이라고 합니다.
간단한 예제입니다. 스트림 내 String의 toUpperCase메소드를 실행해서 대문자로 변환한 값들이 담긴 스트림을 리턴합니다.
Stream<Integer> stream = names.stream()
.map(String::toUpperCase());
다음처럼 요소 내에 있는 객체 수량도 꺼내올 수 있습니다. 각 상품을 상품의 수량으로 맵핑
Stream<Integer> stream = productList.stream()
.map(Product :: getAmount);
FlatMap
인자로 mapper,리턴 타입은 Stream 즉 새로운 스트림을 생성해서 리턴하는 람다를 넘겨야 합니다.
flatmap은 중첩 구조 ex) [[a],[b]] 를 제거하고 단일컬렉션[a,b]을 만들어줍니다.
List<String> flatList =
list.stream()
.flatMap(Collctions::stream)
.collect(Collectors.toList());
728x90
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] immutable 객체?방어적 복사? (1) | 2022.11.15 |
---|---|
JAVA - 스트림 생성하기 (0) | 2022.10.06 |
객체 간 협력 - 기본 클래스 구현 (0) | 2021.04.11 |