2017/03/21之JDK1.8新特性lambuda表达式学习

最近几天看着C#的代码,就觉得他们的lambuda表达式很神奇,我还在苦恼Java遇到集合操作的时候各种循环遍历,代码奇丑无比,突然在网上搜了下Java  lambuda表达式,果真有,是JDK1.8的新特性,这JDK1.9都出来一段一段时间了,JDK1.8的新特性我还没摸清楚,下面我来说说的简单运用

 

1、先定义一个类例如person

172425_Ku63_3212315.png

2、下面写个main函数开始测试:

自定义几个对象放入list中

172457_1eXA_3212315.png

a):通过条件过滤 (打印出年龄大于30岁的人的名字)

Predicate<Person> predicate= p1->p1.getAge()>30;
persons.stream()
        .filter(predicate)
        .forEach(p1->{System.err.println(p1.getName());});

输出:李四

b):遍历集合

persons.stream()
        .forEach(p2->{System.out.println(p2.getName());});

输出:

张三

李四

c):利用流对集合进行求和

int  sum1=persons.stream().mapToInt(p3->p3.getAge()).sum();
 System.out.println(sum1);

输出:63

d):利用流对集合求平均值

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

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

输出:31.5

e):利用流操作数组

Person[] peoples=new Person[]{new Person("小赵",23),new Person("张俊杰",56)};
Stream<Person> stream= Arrays.stream(peoples);
stream.forEach(p5->System.out.println(p5.getName()));

输出:

小赵

张俊杰

 

今天的记录就到这里,加油!     2018/03/21 17::39

转载于:https://my.oschina.net/u/3212315/blog/1648695

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值