allMatch(Predicate<? super T> predicate)
인풋
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
List<Integer> list2 = Arrays.asList(2, 4, 6, 8);
최종연산자
boolean result1 = list1.stream()
.allMatch(num -> num % 2 == 0);
boolean result2 = list2.stream()
.allMatch(num -> num % 2 == 0);
아웃풋
System.out.println("result1 : " + result1);
System.out.println("result2 : " + result2);
결과
anyMatch(Predicate<? super T> predicate)
인풋
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
최종연산자
boolean result1 = list1.stream()
.anyMatch(num -> num % 2 == 0);
아웃풋
System.out.println("result1 : " + result1);
결과
noneMatch(Predicate<? super T> predicate)
인풋
List<Integer> list1 = Arrays.asList(1, 3, 5, 7);
List<Integer> list2 = Arrays.asList(2, 4, 6, 7);
최종연산자
boolean result1 = list1.stream()
.noneMatch(num -> num % 2 == 0);
boolean result2 = list2.stream()
.noneMatch(num -> num % 2 == 0);
아웃풋
System.out.println("result1 : " + result1);
System.out.println("result2 : " + result2);
결과
collect(Collector<? super T, A, R> collector)
collect(Collector<Supplier supplier, BiConsumer<R,? super T) accumulator, BisConsumer<R,T> combiner)
Stream<Integer> stream = Stream.of(1, 2, 3, 4);
List<Integer> list = stream.collect(Collectors.toList());
list.forEach(System.out::println);
Collectors는 공식문서에서 확인하실 수 있습니다.
java.util.stream.Collectors
인풋
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
최종연산자
long result = list1.stream().count();
아웃풋
System.out.println(result);
결과
findAny()
인풋
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
최종연산자
Optional<Integer> result = list1.stream().findAny();
아웃풋
System.out.println(result.get());
결과
findFirst()
인풋
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
최종연산자
Optional<Integer> result = list1.stream().findFirst();
아웃풋
System.out.println(result.get());
결과
1. findAny(): Stream 중 1개를 찾는 기능
2. findFirst(): Stream 중 1번째 요소를 찾는 기능
인풋
List<Integer> list1 = IntStream.range(1, 100)
.boxed()
.collect(Collectors.toList());
최종 연산자
Optional<Integer> result = list1.stream()
.parallel()
.filter(num -> num % 2 == 0)
.findAny();
아웃풋
System.out.println(result.get());
결과
findAny()를 사용했을 경우 가장 첫번째 요소인 2를 검색하지 않는 모습입니다.
인풋
동일
최종 연산자
Optional<Integer> result = list1.stream()
.parallel()
.filter(num -> num % 2 == 0)
.findFirst();
-결과
findFirst()를 사용했을 경우 가장 첫번째 요소인 2를 검색하는 모습입니다.
forEach(Consumer<? super T> action)
인풋
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
최종연산자
list1.stream().forEach(num -> System.out.println(num));
결과
forEachOrdered(Consumer<? super T> action)
인풋
List<Integer> list1 = Arrays.asList(1, 2, 3, 4);
최종연산자 -> forEach 사용
list1.stream()
.parallel()
.forEach(System.out::println);
결과
최종연산자 -> forEachOrdered 사용
list1.stream()
.parallel()
.forEachOrdered(System.out::println);
결과
max(Comparator<? super T> comparator)
인풋
List<String> words = Arrays.asList("a", "bb", "ccc", "dddd", "eeeee");
최종연산자
Optional<String> maxLength = words.stream()
.max(Comparator.comparingInt(String::length));
아웃풋
System.out.println("가장 긴 문자열: " + maxLength.get());
결과
min(Comparator<? super T> comparator)
인풋
List<String> words = Arrays.asList("a", "bb", "ccc", "dddd", "eeeee");
최종연산자
Optional<String> minLength = words.stream()
.min(Comparator.comparingInt(String::length));
아웃풋
System.out.println("가장 작은 문자열: " + minLength.get());
결과
Comparator은 공식문서에서 확인하실 수 있습니다.
java.util.Comparator
reduce(T identity, BinaryOperator accumulator)
reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner)
인풋
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
최종연산자
int sum = numbers.stream().reduce(0, (a, b) -> a + b);
아웃풋
System.out.println(sum);
결과
reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner)는 병렬 Stream에서 사용가능한 reduce()
인풋
List<String> strings = Arrays.asList("one", "two", "three", "four");
최종연산자
String result = strings.parallelStream()
.reduce("", (s1, s2) -> s1 + s2, (s1, s2) -> s1 + s2);
아웃풋
System.out.println(result);
결과
toArray()
toArray(IntFunction<A[]> generator)
인풋
List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
최종연산자
Object[] number1 = numbers.stream().toArray();
Integer[] number2 = numbers.stream().toArray(Integer[]::new);
아웃풋
Arrays.stream(number1).forEach(System.out::println);
System.out.println("=====");
Arrays.stream(number2).forEach(System.out::println);
결과
반환되는 배열의 타입을 지정해줄지, Object타입으로 둘지의 차이이다.