当前位置: 代码迷 >> 综合 >> Java基础 -> Stream流的终止操作(allMatch,findFirst,count,max,forEach),归约,收集
  详细解决方案

Java基础 -> Stream流的终止操作(allMatch,findFirst,count,max,forEach),归约,收集

热度:52   发布时间:2023-12-16 10:05:30.0
package Test10;import org.junit.Test;import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;/*** 功能描述:Stream流的终止操作* @version 1.0* @className Test1007* @author: 罗德* @create: 2020-10-07 15:25*/
public class Test1007 {
    /*** 功能描述:* sream终止操作之allMatch()* 所有元素是否满足给定的条件* 方法参数描述:无*/@Testpublic void test1() {
    List<Integer> list = Arrays.asList(5, 4, 3, 2, 1, 0);Stream<Integer> stream = list.stream();/*** public abstract boolean allMatch* (java.util.function.Predicate<? super T> predicate)* 返回此流的所有元素是否与提供的谓词匹配。如果不需要确定结果,则不能对所有元素求值谓词。* 如果流为空,则返回true,不计算谓词。 这是短路终端操作。*/boolean allMatch = stream.allMatch(integer -> integer > 1);System.out.println(list);//[5, 4, 3, 2, 1, 0]System.out.println(allMatch);//false}/*** 功能描述:* sream终止操作之anyMatch()* 至少有一个元素,是否满足给定的条件* 方法参数描述:无*/@Testpublic void test2() {
    List<String> list = Arrays.asList("a", "ab", "bc", "cd");Stream<String> stream = list.stream();/*** public abstract boolean anyMatch* (java.util.function.Predicate<? super T> predicate)* 返回此流的任何元素是否与提供的谓词匹配。如果不需要确定结果,则不能对所有元素求值谓词。* 如果流为空,则返回false,并且不计算谓词。 这是短路终端操作。*/boolean anyMatch = stream.anyMatch(s -> s.contains("a"));System.out.println(list);//[a, ab, bc, cd]System.out.println(anyMatch);//true}/*** 功能描述:* sream终止操作之noneMatch()* 没有元素满足给定的条件* 方法参数描述:无*/@Testpublic void test3() {
    List<String> list = Arrays.asList("a", "ab", "bc", "cd");Stream<String> stream = list.stream();/*** public abstract boolean noneMatch* (java.util.function.Predicate<? super T> predicate)* 返回此流中是否没有与提供的谓词匹配的元素。如果不需要确定结果,则不能对所有元素求值谓词。* 如果流为空,则返回true,不计算谓词。 这是短路终端操作。*/boolean noneMatch = stream.noneMatch(s -> s.contains("m"));System.out.println(list);//[a, ab, bc, cd]System.out.println(noneMatch);//true}/*** 功能描述:* sream终止操作之findFirst()/findAny* 回描述此流的第一个元素的可选值/任意一个* 方法参数描述:无*/@Testpublic void test4() {
    List<String> list = Arrays.asList("a", "ab", "bc", "cd");Stream<String> stream = list.stream();/*** public abstract java.util.Optional<T> findFirst()* 返回描述此流的第一个元素的可选值,如果流为空,则返回空的可选值。* 如果流没有遇到顺序,则可以返回任何元素。 这是短路终端操作。*/Optional<String> first = stream.findFirst();//Optional<String> any = stream.findAny();//任意一个System.out.println(list);//[a, ab, bc, cd]System.out.println(first);//Optional[a]}/*** 功能描述:sream终止操作之count/max/forEach* count():返回此流中元素的计数。* max():根据提供的比较器返回此流的最大元素* forEach():对此流的每个元素执行操作。* 方法参数描述:无*/@Testpublic void test5() {
    List<String> list = Arrays.asList("a", "ab", "bc", "cd");Stream<String> stream = list.stream();System.out.println(stream.count());//4System.out.println(list.stream().max((o1, o2) -> o1.compareTo(o2)));//Optional[cd]list.stream().forEach(System.out::print);//aabbccdSystem.out.println("外部迭代");list.forEach(System.out::print);//aabbccd}/*** 功能描述:sream终止操作之归约(计算-如求和)* reduce():使用函数对元素进行操作,如累加,返回一个值* 方法参数描述:无*/@Testpublic void test6() {
    List<Integer> list = Arrays.asList(5, 4, 3, 2, 1, 0);Stream<Integer> stream = list.stream();/*** public abstract java.util.Optional<T> reduce* (java.util.function.BinaryOperator<T> accumulator)* 使用关联累加函数对该流的元素执行缩减,并返回一个可选的描述减少值(如果有)。* 这是终端操作。*/Optional<Integer> reduce = stream.reduce(Integer::max);System.out.println(list);//[5, 4, 3, 2, 1, 0]System.out.println(reduce);//Optional[5]Stream<Integer> stream1 = list.stream();Optional<Integer> reduce1 = stream1.reduce(Integer::sum);System.out.println(reduce1);//Optional[15]}/*** 功能描述:sream终止操作之收集collect* 使用集合工具的方法来处理stream流,返回一个集合(List,Set)* 方法参数描述:无*/@Testpublic void test7() {
    List<Integer> list = Arrays.asList(5, 4, 3, 2, 1, 0);Stream<Integer> stream = list.stream();/*** public abstract <R, A> R collect* (java.util.stream.Collector<? super T, A, R> collector)* 使用收集器对此流的元素执行可变的缩减操作。这是终端操作*/List<Integer> collect = stream.collect(Collectors.toList());System.out.println(collect);//[5, 4, 3, 2, 1, 0]Set<Integer> collect1 = list.stream().collect(Collectors.toSet());System.out.println(collect1);//[0, 1, 2, 3, 4, 5]}
}
  相关解决方案