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);
    }
}
​
相关推荐
专业程序开发源4 分钟前
springboot校企合作双选会一站式预约与面试系统16010-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·面试·php·课程设计
Elastic 中国社区官方博客42 分钟前
Observability:当 YAML 遇上 IConfiguration:OpenTelemetry .NET SDK 的声明式配置
大数据·开发语言·elasticsearch·搜索引擎·全文检索·.net
郑州光合科技余经理44 分钟前
同城商城源码:商品库和订单库怎么随包交付
android·java·开发语言·后端·uni-app·php·ai编程
\光辉岁月/1 小时前
4.String类
java·面向对象·stringbuilder·string·stringbuffer·字符串类
welfare9621 小时前
新号别搞:C++_list
开发语言·c++
数据狐(Datafox)1 小时前
一文读懂京东商品详情 API:返回字段解读与 JSON 样例
开发语言·数据库·爬虫·json
蚰蜒螟1 小时前
从 Java SocketChannel 到 TCP 挥手:一次 close() 的完整调用链与引用计数解析
java·python·tcp/ip
坤坤子吖1 小时前
Linux 线程同步与互斥——条件变量与线程同步
linux·开发语言·c++·笔记·学习
damoluomu1 小时前
国产 Java CMS 的协议和坑,讲清楚
java·开发语言