ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-06-11 15:02:24  阅读:358  来源: 互联网

标签:XianYu stream getName list xianYuList 逼范 Date 表达式 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有