Stream流是Java 8引入的一个新特性,它提供了一种更简洁、更高效的方式来处理集合数据。Stream流的操作可以分为两种:中间操作和终端操作。
中间操作(Intermediate Operations):
- filter(Predicate<T> predicate):根据指定的条件过滤流中的元素。
- map(Function<T, R> mapper):将流中的每个元素通过指定的函数映射为另一个元素。
- flatMap(Function<T, Stream<R>> mapper):将流中的每个元素通过指定的函数映射为一个流,并将所有流合并为一个流。
- distinct():去除流中的重复元素。
- sorted(Comparator<T> comparator):对流中的元素进行排序。
- peek(Consumer<T> action):对流中的每个元素执行指定的操作,但不改变流中的元素。
终端操作(Terminal Operations):
- forEach(Consumer<T> action):对流中的每个元素执行指定的操作。
- toArray():将流中的元素转换为数组。
- reduce(BinaryOperator<T> accumulator):将流中的元素依次进行指定的二元操作,返回一个Optional对象。
- collect(Collector<? super T, A, R> collector):将流中的元素收集到指定的容器中,返回一个新的容器。
- min(Comparator<T> comparator):返回流中的最小元素。
- max(Comparator<T> comparator):返回流中的最大元素。
- count():返回流中的元素个数。
- anyMatch(Predicate<T> predicate):判断流中是否有任意一个元素满足指定的条件。
- allMatch(Predicate<T> predicate):判断流中是否所有元素都满足指定的条件。
- noneMatch(Predicate<T> predicate):判断流中是否没有元素满足指定的条件。
- findFirst():返回流中的第一个元素。