博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java8新特性 1——利用流和Lambda表达式操作集合
阅读量:6424 次
发布时间:2019-06-23

本文共 2159 字,大约阅读时间需要 7 分钟。

Java8中可以用简洁的代码来操作集合,比如List,Map,他们的实现ArrayList。以此来实现Java8的充分利用CPU的目标。

流和Lambda表达式都是Java8中的新特性。流可以实现对集合的遍历,过滤,聚合,求和以及求平均值等操作。文章力求好懂的基础上写得简洁,达到看完就能用的效果。

1:利用流和Lambda来遍历集合

public class Main {    public static void main(String[] args) {        // TODO Auto-generated method stub        List
peoples=new ArrayList
(); peoples.add(new People("爱因斯坦", 100)); peoples.add(new People("牛顿", 80)); //stream()方法得到一个流 peoples.stream() .forEach(p->{System.out.println(p.getName());}); }}class People{ private String name; private Integer age; public People(String name, Integer age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; }}

输出如如下:

因斯坦

牛顿
霍金

2:利用流对集合进行过滤

过滤选取70岁以上的科学家

Predicate
predicate=p->p.getAge()>70;peoples.stream() .filter(predicate) .forEach(p->{System.err.println(p.getName());});

输出结果如下:

爱因斯坦

牛顿

3:利用流对集合进行聚集

long len=peoples.stream()               .count();        System.out.println(len);

输出

3

4:利用流对集合进行求和

long sum=peoples.stream()               .mapToInt(p->p.getAge())               .sum();        System.out.println(sum);

输出

230

5:利用流对集合求平均值

因为求平均值会出现除数为0的情况,所以返回值是Optional

OptionalDouble sum=peoples.stream()               .mapToInt(p->p.getAge())               .average();        if(sum.isPresent())            System.out.println(sum.getAsDouble());        else {            System.out.println("error");        }

输出如下;

76.66666666666667

6:利用流操作数组

可以利用Arrays.stream()方法得到一个stream或者用Stream.of()得到Stream对象,后面的操作和上面讲解的一样操作。

//操作数组            People[] peoples2={new People("爱因斯坦", 100),new People("牛顿", 80),new People("霍金", 50)};        //Stream
stream=Stream.of(peoples2); Stream
stream=Arrays.stream(peoples2); stream.forEach(p->System.out.println(p.getName()));

输出;

爱因斯坦

牛顿
霍金

转载于:https://www.cnblogs.com/pin-wang/p/5547809.html

你可能感兴趣的文章
instrument 调试 无法指出问题代码 解决
查看>>
理解缓存
查看>>
BAT 经典算法笔试题 —— 磁盘多路归并排序
查看>>
Nginx限制带宽
查看>>
All Web Application Attack Techniques
查看>>
归档日志ORA-19809: 超出了恢复文件数的限制
查看>>
精品德国软件 UltraShredder 文件粉碎机
查看>>
PANDAS 数据合并与重塑(join/merge篇)
查看>>
文件时间信息在测试中的应用
查看>>
直播疑难杂症排查(8)— 播放杂音、噪音、回声问题
查看>>
如何写gdb命令脚本
查看>>
Android ListView展示不同的布局
查看>>
iOS宏(自己使用,持续更新)
查看>>
手把手玩转win8开发系列课程(3)
查看>>
NGINX引入线程池 性能提升9倍
查看>>
《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件
查看>>
linux下mongodb定时备份指定的集合
查看>>
oVirt JBAS server start failed, ajp proxy cann't server correct. ovirt-engine URL cann't open
查看>>
CDP WebConsole上线公告
查看>>
ubuntu下安装摄像头应用程序xawtv
查看>>