[英]SortList<Employee> inside Map<String, List<Employee>> based on key
我有一个List<Employee>
class Employee{
String name;
Integer id;
}
我的清单是这样的
[{name:"Satya", id:123},{name:"Andrew", id:125}, {name:"Satya",id:124"}]
现在,我想将上面的列表按名称分组,为此我写了一些类似的东西。
Map<String, List<Employee>> groupedData = data.stream()
.collect(groupingBy(Employee::getName,
LinkedHashMap::new, Collectors.toList()))
所以,我的结果是这样的:
{"Satya":[{name:"Satya", id:124,cym:202012}, {name:"Satya", id:123, cym:202101}], "Andrew":[{name:"Andrew", id:125, cym:202012}]}
我希望对列表进行排序,最终结果应如下所示:
{"Satya":[{name:"Satya", id:123, cym:202001}, {name:"Satya", id:124, cym:202101}], "Andrew":[{name:"Andrew", id:125, cym:202001}]}
如您所见,每个名称的所有记录都基于 cym 排序。
您可以按名称排序,这也会对它们进行分组,但实际格式与您显示的不同。
Collections.sort( data, Employee::getName );
您可以在收集之前进行排序,即添加stream().sorted(...)
data.stream()
.sorted(Comparator.comparingInt(Employee::getId))
.collect(Collectors.groupingBy(Employee::getName, LinkedHashMap::new, Collectors.toList()));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.