繁体   English   中英

排序列表<employee>里面 Map <string, list<employee> > 基于键</string,></employee>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM