其他分享
首页 > 其他分享> > 【Lambda表达式】让你的代码逼范十足~~

【Lambda表达式】让你的代码逼范十足~~

作者:互联网

【关于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列表字段为同一个值

xianYuList.stream().forEach(a -> a.setAge("0"));

循环
使用forEach进行循环

//替换用户名称不为空的名字为“XIXI”
xianYuList.forEach((s) -> {
	if(null != s.getName()){
		s.setName("XIXI");
	}
});

标签:XianYu,stream,getName,list,xianYuList,逼范,Date,表达式,Lambda
来源: https://blog.csdn.net/weixin_42777004/article/details/106665273