【关于Lambda表达式】
Lambda表达式是 JDK8的新特性,可以取代大部分的匿名内部类,写出更优雅简洁的Java代码,我在日常撸代码的时候常用的地方是集合的遍历和其他集合操作中,极大的优化了代码结构,总之一句话就是少写代码,可以提高我们的编程思维,话不多说,上Demo~~~
Lambda表达式提供了一些方便的list操作的方法,主要覆盖分组、过滤、求
和、最值、排序、去重
先准备个实体类
import java.util.Date;
public class XianYu {
//姓名
private String name;
//年龄
private int age;
//性别
private String gender;
//生日
private Date birthdayDate;
}
分组
通过groupingBy将集合分组拆分成多个集合
//通过年龄分组,得到一个以年龄为key,用户集合为值的Map集合
Map <Integer,List<XianYu>> groupByAge = xianYuList.stream().collect(Collectors.groupingBy(XianYu::getAge));
过滤
通过filter方法可以过滤一些条件
//过滤
//筛选名字为“uzi”的用户
//filter内添加条件,保留返回true的实例
List<XianYu> list = xianYuList.stream().filter(s -> s.getName.equals("uzi")).collect(Collectors.toList());
求和
通过mapToInt方法可以基本类型求和
//求和
//基本类型
int sumAge = xianYuList.stream().mapToInt(XianYu::getAge).sum();
最值
求最大与最小值,使用min max方法
//最小
Date minBirthdayDate = xianYuList.stream().map(XianYu::getBirthdayDate).min(Date::compareTo).get();
//最大
Date maxBirthdayDate = xianYuList.stream().map(XianYu::getBirthdayDate).max(Date::compareTo).get();
排序
通过sort对单字段多字段进行排序
//排序
//单字段排序
xianYuList.sort(Comparator.comparing(XianYu::getName));
//多字段排序
xianYuList.sort(Comparator.comparing(XianYu::getName).thenComparing(XianYu::getAge));
去重
通过distinct方法进行去重
List<Long> idList = new ArrayList<Long>();
idList.add(1L);
idList.add(1L);
idList.add(2L);
List<Long> distinctIdList = idList.stream().distinct().collect(Collectors.toList());
获取list对象某个字段组装新的list
//获取list对象的某个字段组装成新list
List<String> nameList= xianYuList.stream().map(a -> a.getName()).collect(Collectors.toList());
批量设置list列表字段为同一个值
扫描二维码关注公众号,回复:
11429192 查看本文章
![](/qrcode.jpg)
xianYuList.stream().forEach(a -> a.setAge("0"));
循环
使用forEach进行循环
//替换用户名称不为空的名字为“XIXI”
xianYuList.forEach((s) -> {
if(null != s.getName()){
s.setName("XIXI");
}
});