gpt4 book ai didi

java-8 - 如何将 List 转换为 Map>

转载 作者:行者123 更新时间:2023-12-02 09:45:49 25 4
gpt4 key购买 nike

这是用 Java7 编写的一段代码,我想通过使用 Streams 和 Lambda 转换为 Java8。

public static Map<String, List<Employee>> getEmployees(List<Person> personList) {
Map<String, List<Employee>> result = new HashMap<>();
for (Person person : personList) {
String[] perArr = person.getName().split("-");
List<Employee> employeeList = result.get(perArr[0]);
if (employeeList == null) {
employeeList = new ArrayList<>();
}
employeeList.add(new Employee(person.getPersonId(), perArr[1]));
result.put(perArr[0], employeeList);
}

return result;

}

最佳答案

嗯,我想说,你已经很接近了,问题是你实际上需要将 3 件事传递到流管道的下一阶段:第一个 token 和第二个 token (来自 split("-") )以及 person::getPersonId ;我用过 List这里还有一些用于此目的的转换(例如,您可以使用Triple,我听说apache有它):

  personList.stream()
.map(person -> {
String[] tokens = person.getName().split("-");
return Arrays.asList(tokens[0], tokens[1], person.getPersonId());
})
.collect(Collectors.groupingBy(
list -> (String) list.get(0),
Collectors.mapping(
list -> new Employee((Integer) list.get(2), (String) list.get(1)),
Collectors.toList())));

关于java-8 - 如何将 List<Person> 转换为 Map<String,List<Employee>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51936294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com