最近几天看着C#的代码,就觉得他们的lambuda表达式很神奇,我还在苦恼Java遇到集合操作的时候各种循环遍历,代码奇丑无比,突然在网上搜了下Java lambuda表达式,果真有,是JDK1.8的新特性,这JDK1.9都出来一段一段时间了,JDK1.8的新特性我还没摸清楚,下面我来说说的简单运用
1、先定义一个类例如person
2、下面写个main函数开始测试:
自定义几个对象放入list中
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