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]}
}
详细解决方案
Java基础 -> Stream流的终止操作(allMatch,findFirst,count,max,forEach),归约,收集
热度:52 发布时间:2023-12-16 10:05:30.0
相关解决方案
- java 乱码 汉字是 ? 如何转换成汉字
- java web 登录次数限制,该如何解决
- java 工商银行网银支付 B2B的 都亟需什么,需要注意什么
- Java Applet程序从JDK6升级到7时遇到的有关问题
- java web 视频相干
- 请教一个关于链接后缀的有关问题(java web 应用)
- java 系统单点登录解决方案
- java.lang.NumberFormatException: For input string: "id"该如何处理
- java.lang.NoSuchMethodException: setId([Ljava.lang.String;)解决方法
- java 获取客户端IP解决办法
- JAVA 后台怎么获得前台页面FCKedit编辑器中的内容以及内容的样式
- java 正则化匹配有关问题
- java web 受阻
- java.lang.IllegalStateException: No output folder,该怎么解决
- java.lang.NoSuchMethodError: org.springframework.util.ReflectionUtils.makeAccess,该如何解决
- java 乱码有关问题 急求大神
- java EE错误如何解决阿,都是过了,没有能解决的!
- JSP页面<c:foreach>该怎么处理
- java 工程打包有关问题 多谢各位大神!多谢
- JAVA WEB导航条,该怎么处理
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password,该如何处理
- java 中Node 有关问题
- 关于 java 引述传递和值传递,你的知否
- 吐了,java Timer 终止不了。
- Java Web 学习中有关问题,请高手指教
- java web中的url地址小疑点。
- java web开发解决办法
- java.lang.NullPointerException解决方法
- 关于 java cast 有关问题,你明白不
- java ftp 下传和上载乱码有关问题