java 8 lambda表达式list操作分组、过滤、求和、最值、排序、去重 |
您所在的位置:网站首页 › java过滤集合里的元素是什么 › java 8 lambda表达式list操作分组、过滤、求和、最值、排序、去重 |
java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重。跟之前的传统写法对比,能少写不少代码。 新建实体类 package com.vvvtimes.vo; import java.math.BigDecimal; import java.util.Date; public class User { private Long id; //姓名 private String name; //年龄 private int age; //工号 private String jobNumber; //性别 private String sex; //入职日期 private Date entryDate; //家庭成员数量 private BigDecimal familyMemberQuantity; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getJobNumber() { return jobNumber; } public void setJobNumber(String jobNumber) { this.jobNumber = jobNumber; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getEntryDate() { return entryDate; } public void setEntryDate(Date entryDate) { this.entryDate = entryDate; } public BigDecimal getFamilyMemberQuantity() { return familyMemberQuantity; } public void setFamilyMemberQuantity(BigDecimal familyMemberQuantity) { this.familyMemberQuantity = familyMemberQuantity; } }1.分组 通过groupingBy可以分组指定字段 //分组 Map groupBySex = userList.stream().collect(Collectors.groupingBy(User::getSex)); //遍历分组 for (Map.Entry entryUser : groupBySex.entrySet()) { String key = entryUser.getKey(); List entryUserList = entryUser.getValue(); }上门的分组存在key空值安全问题,需要做过滤或封装处理 用Optional封装使用中会报No value present //分组添加累计 Map groupMap = list.stream().collect(Collectors.groupingBy(x -> Optional.ofNullable(x.getReviewerGroupId()))); //遍历分组 for (Map.Entry entryGroup : groupMap.entrySet()) { Optional key = entryGroup.getKey(); Long groupId = key.get(); List entryGroupList = entryGroup.getValue(); }正确使用方法如下,自定义groupingBy_WithNullKeys /** Like Collectors.groupingBy, but accepts null keys. */ public static Collector groupingBy_WithNullKeys(Function |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |