Java基础知识总结(28)

末端方法

末端方法是对流的最终操作。当对某个 Stream 执行末端方法后,该流将会被"消耗"
且不再可用。换句话说就是末端方法一旦调用后就会关闭流,再不能对流进行操作,否则会抛出异常。

方法 功能
forEach(Consumer action) 遍历流中所有元素,对每个元素执行 action
toArray() 将流中所有元素转换为一个数组
reduce() 该方法有三个重载的版本,都用于通过某种操作来合并流中的元素
min() 返回流中所有元素的最小值
max() 返回流中所有元素的最大值
count() 返回流中所有元素的数量
anyMatch(Predicate predicate) 判断流中是否至少包含一个元素符合 Predicate 条件
allMatch(Predicate predicate) 判断流中是否每个元素都符合 Predicate 条件
noneMatch(Predicate predicate) 判断流中是否所有元素都不符合 Predicate 条件
findFirst() 返回流中的第一个元素
findAny() 返回流中的任意一个元素
复制代码
/**
 *末端方法练习
 */
public class StreamDemo4 {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("张麻子","师爷","黄老爷","李东方","阿廖沙");
        Stream<String> stream = list.stream();
        //流转数组
        Object[] objects = stream.toArray();
        List<Integer> list1 = Arrays.asList(8,7,6,1,3);
        Integer reduce = list1.stream().reduce(6, BinaryOperator.maxBy((o1, o2) -> {
            return o1 - o2;
        }));
        //获取最大值
        Optional<Integer> max = list1.stream().max(Integer::compareTo);
        //获取最小值
        Optional<Integer> min = list1.stream().min(Integer::compareTo);
        //统计元素个数
        long count = list1.stream().count();
        System.out.println(count);
        System.out.println(max.get());
        System.out.println(min.get());
​
​
        Optional<String> first = list.stream().findFirst();
        System.out.println(first.get());
        //返回第一个元素
        Optional<String> any = list.stream().findAny();
        System.out.println(any.get());
    }
}
复制代码
/**
 * 末端方法练习
 */
public class StreamDemo5 {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("张麻子","师爷","黄老爷","李东方","阿廖沙","让子弹飞");
        //只要有1个元素满足条件即可
        boolean b = list.stream().anyMatch(t -> {
            return t.length() > 3;
        });
        //所有的元素都满足条件时才会返回true,否则返回false
        boolean c = list.stream().allMatch(t -> {
            return t.length() >= 2;
        });
        //所有元素都不满足于条件时才会返回true,只要有1个满足条件就会返回false
        boolean d = list.stream().noneMatch(t->{
            return t.length()>4;
        });
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }
}
​
相关推荐
想回家的一天2 小时前
ECONNREFUSED ::1:8000 前端代理问题
开发语言
cike_y2 小时前
Mybatis之解析配置优化
java·开发语言·tomcat·mybatis·安全开发
Jay_Franklin3 小时前
SRIM通过python计算dap
开发语言·python
是一个Bug3 小时前
Java基础50道经典面试题(四)
java·windows·python
Slow菜鸟3 小时前
Java基础架构设计(三)| 通用响应与异常处理(分布式应用通用方案)
java·开发语言
消失的旧时光-19434 小时前
401 自动刷新 Token 的完整架构设计(Dio 实战版)
开发语言·前端·javascript
wadesir4 小时前
Rust中的条件变量详解(使用Condvar的wait方法实现线程同步)
开发语言·算法·rust
我是Superman丶4 小时前
《Spring WebFlux 实战:基于 SSE 实现多类型事件流(支持聊天消息、元数据与控制指令混合传输)》
java
tap.AI4 小时前
RAG系列(二)数据准备与向量索引
开发语言·人工智能
廋到被风吹走4 小时前
【Spring】常用注解分类整理
java·后端·spring