我有一个班级
class Passenger {
String type;
String firstName;
String lastName;
//getter,setter
public String getName() {
return firstName + " " + lastName
}
}
现在我想将乘客列表转换为Map,其中键为“type”,值为“name”列表
我尝试实现以下目标,
passengerList.stream().map(w -> w.getName()).collect(groupBy( getType() ));
但是在.map函数后,Passenger已映射到firstName,类型不再可用,不知道如何执行此操作。
答案 0 :(得分:7)
您必须先groupingBy
然后使用mapping
获取每种类型的List
名称:
Map<String,List<String>> namesByType =
passengerList.stream()
.collect(Collectors.groupingBy(Passenger::getType,
Collectors.mapping(Passenger::getName,
Collectors.toList())));