java - 将一个list按照下面字段分组后放入到一个新的list里面
本文介绍了java - 将一个list按照下面字段分组后放入到一个新的list里面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
像按以下格式展现内容
解决方案
不知道你的POJO对象叫啥,我自己取了一个名叫Project
@Getter
@Setter
@NoArgsConstructor
public class Project {
private Integer uud;
private String regCode;
private String projectName;
private String projectAddress;
private String companyName;
// 设置分组的key,这里就是把你想要分组的key拼起来
public String groupKey(){
return this.projectName + "_" + this.projectAddress + "_" + this.companyName;
}
}
然后用Collectors.groupingBy方法就可以分组了,如下:
List<Project> projects = new ArrayList<>();
// 这里的key就是,宁江大院_成都市都江堰市蒲阳镇花溪村_成都文森电梯设备股份有限公司
Map<String, List<Project>> group = projects.stream().collect(Collectors.groupingBy(Project::groupKey));
这里得到一个map,key就是刚拼起来的分组依据,value就是一个list,就是该分组下的集合
你这个展示是页面上的吧...map已经分好组了,你可以按照你页面的规则循环map就可以了噻...我这里只能根据我自己的创建的POJO对象来处理了
若是没有办法使用Java8,那就自己做一个类似的map的分类吧,类似下面的代码
List<Project> projects = new ArrayList<>();
Map<String, List<Project>> map = new HashMap<>();
for (Project project: projects){
String key = project.groupKey();
// 按照key取出子集合
List<Project> subProjects = map.get(key);
// 若子集合不存在,则重新创建一个新集合,并把当前Project加入,然后put到map中
if (subProjects == null){
subProjects = new ArrayList<>();
subProjects.add(project);
map.put(key, subProjects);
}else {
// 若子集合存在,则直接把当前Project加入即可
subProjects.add(project);
}
}
这篇关于java - 将一个list按照下面字段分组后放入到一个新的list里面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文