lamda list 分组_jdk8 lambda表达式list操作分组、过滤、求和、最值、排序、去重

本文介绍了Java8的Lambda表达式在处理List时的常用方法,包括分组、过滤、求和、获取最值、排序、去重等操作,并提供了具体的示例代码。通过这些方法,可以简化和优化传统Java代码,提高开发效率。
摘要由CSDN通过智能技术生成

java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重。跟之前的传统写法对比,能少写不少代码。

新建实体类

1 packagecom.vvvtimes.vo;2

3 importjava.math.BigDecimal;4 importjava.util.Date;5

6 public classUser {7

8 privateLong id;9

10 //姓名

11 privateString name;12

13 //年龄

14 private intage;15

16 //工号

17 privateString jobNumber;18

19 //性别

20 privateString sex;21

22 //入职日期

23 privateDate entryDate;24

25 //家庭成员数量

26 privateBigDecimal familyMemberQuantity;27

28 publicLong getId() {29 returnid;30 }31

32 public voidsetId(Long id) {33 this.id =id;34 }35

36 publicString getName() {37 returnname;38 }39

40 public voidsetName(String name) {41 this.name =name;42 }43

44 public intgetAge() {45 returnage;46 }47

48 public void setAge(intage) {49 this.age =age;50 }51

52 publicString getJobNumber() {53 returnjobNumber;54 }55

56 public voidsetJobNumber(String jobNumber) {57 this.jobNumber =jobNumber;58 }59

60 publicString getSex() {61 returnsex;62 }63

64 public voidsetSex(String sex) {65 this.sex =sex;66 }67

68 publicDate getEntryDate() {69 returnentryDate;70 }71

72 public voidsetEntryDate(Date entryDate) {73 this.entryDate =entryDate;74 }75

76 publicBigDecimal getFamilyMemberQuantity() {77 returnfamilyMemberQuantity;78 }79

80 public voidsetFamilyMemberQuantity(BigDecimal familyMemberQuantity) {81 this.familyMemberQuantity =familyMemberQuantity;82 }83 }

1.分组

通过groupingBy可以分组指定字段

1 //分组

2 Map> groupBySex =userList.stream().collect(Collectors.groupingBy(User::getSex));3 //遍历分组

4 for (Map.Entry>entryUser : groupBySex.entrySet()) {5 String key =entryUser.getKey();6 List entryUserList = entryUser.getValue();

2.过滤

通过filter方法可以过滤某些条件

1 //过滤2 //排除掉工号为201901的用户

3 List userCommonList = userList.stream().filter(a -> !a.getJobNumber().equals("201901")).collect(Collectors.toList());

3.求和

分基本类型和大数类型求和,基本类型先mapToInt,然后调用sum方法,大数类型使用reduce调用BigDecimal::add方法

1 //求和2 //基本类型

3 int sumAge =userList.stream().mapToInt(User::getAge).sum();4 //BigDecimal求和

5 BigDecimal totalQuantity = userList.stream().map(User::getFamilyMemberQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);

上面的求和不能过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值