如何使用Java8流将List转换为Map?

如何使用Java8流将List转换为Map?,java,java-8,java-stream,Java,Java 8,Java Stream,我有Employee对象,它有rowId、skillId和student,如下所示 [0, 20,"John"], [1, 30,"Amy"], [2, 20,"Tom"] 我需要这样的回应: Map<skillId, List<student>> 20 , ["John","Tom"] 30 , [Amy] 有人能帮忙吗?尝试使用groupingBy和mapping 请使用下面的 Map<Integer, List<Employee>>

我有Employee对象,它有rowId、skillId和student,如下所示

[0, 20,"John"],

[1, 30,"Amy"],

[2, 20,"Tom"]
我需要这样的回应:

Map<skillId, List<student>>

20 , ["John","Tom"]

30 , [Amy]
有人能帮忙吗?

尝试使用groupingBy和mapping

请使用下面的

Map<Integer, List<Employee>> collect = employeeList.stream()
                .collect(Collectors.groupingBy(Employee::getSkillId, Collectors.toList()));
输出与您预期的相同-
{30=[Amy], 20=[John,Tom]}

list.stream.collectCollectors.groupingByEmployee::getSkillId,Collectors.mappingEmployee:getStudent,Collectors.toList;到目前为止,您尝试了什么?它正在工作,但有一个问题,因为它正在返回map,但我的方法返回map map SKILANDLIST=new HashMap;skillAndList=employeeList.stream.collectCollectors.groupingByEmployee::getSkillSet,Collectors.mappingEmployee::getUser,Collectors.toList;因此,将响应分配给skillAndList是不兼容的
Map<Integer, List<String>> skillAndList = list.stream().collect(Collectors.groupingBy(Employee::getSkillId, Collectors.mapping(Employee::getStudent, Collectors.toList())));
System.out.println(skillAndList);
{30=[Amy], 20=[John,Tom]}