리덕션과 reduce 메소드 : 최종 연산
리덕션(Reduction) 데이터를 축소하는 연산
T reduce(T identity, BinaryOperator<T> accumulator) // Stream<T>에 존재
// BinaryOperator<T> T apply(T t1, T t2)
public static void main(String[] args) {
List<String> ls
= Arrays.asList("Box", "Simple", "Complex", "Robot");
BinaryOperator<String> lc = (s1, s2) -> {
if(s1.length() > s2.length())
return s1;
else
return s2;
};
String str = ls.stream()
.reduce("", lc); // 스트림 빈 경우 "" 반환
System.out.println(str);
}
reduce의 첫 번째 전달 인자를 스트림의 첫 번째 데이터로 간주함에 주의!
Complex
병렬 스트림
public static void main(String[] args) {
List<String> ls = Arrays.asList("Box", "Simple", "Complex", "Robot");
BinaryOperator<String> lc = (s1, s2) -> {
if(s1.length() > s2.length())
return s1;
else
return s2;
};
String str = ls.parallelStream() // 병렬 처리를 위한 스트림 생성
.reduce("", lc);
System.out.println(str);
}
Complex
'# 02 > Java' 카테고리의 다른 글
[윤성우 열혈자바] 30-2. 스트림의 중간 연산 (0) | 2019.10.28 |
---|---|
[윤성우 열혈자바] 30-1. 스트림의 생성과 연결 (0) | 2019.10.28 |
[윤성우 열혈자바] 29-2. 필터링과 맵핑 (0) | 2019.10.28 |
[윤성우 열혈자바] 29-1. 스트림의 이해와 스트림의 생성 (0) | 2019.10.28 |
[윤성우 열혈자바] 28-3. OptionalInt, OptionalLong, OptionalDouble 클래스 (0) | 2019.10.28 |