如何在Java 8中将List转换为Map,其中.map函数位于链中。

3

我有一个类

class Passenger {
   String type;
   String firstName;
   String lastName;

   //getter,setter
   public String getName() {
     return firstName + " " + lastName
 } 
}

现在我想将乘客列表转换为Map,其中键是“类型”,值是“名称”列表。

我尝试通过以下方式实现:

passengerList.stream().map(w -> w.getName()).collect(groupBy( getType() ));

但是在使用.map函数将Passenger映射到firstName后,类型不再可用,不知道该怎么做。

1个回答

7

您需要先使用groupingBy,然后使用mapping来获取每个类型的名称List

Map<String,List<String>> namesByType = 
    passengerList.stream()
                 .collect(Collectors.groupingBy(Passenger::getType,
                                                Collectors.mapping(Passenger::getName,
                                                                   Collectors.toList())));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接