java - 如何在 java 8 中将 List 转换为 Map,.map 函数在链中

标签 java java-8 java-stream

<分区>

我有课

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后,type不可用了,不知道该怎么做。

最佳答案

您必须先groupingBy,然后使用mapping 获取每种类型名称的List:

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

关于java - 如何在 java 8 中将 List 转换为 Map,.map 函数在链中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36661859/

相关文章:

generics - 为什么泛型类型的实例类与泛型类型类不一样?

java - 以最后一个元素排序

java-8 - Java 8 - 嵌套 if 在循环内

java - 使用流根据键在键值对上应用不同的函数

java - eclipse中检查样式的代码审查

java - Android - CardView 背景始终为灰色

java - 使用最合适的数据结构简化嵌套的 if-else 结构

java - Java 上的服务器名称指示 (SNI)

java - 我如何通过 lambda 创建字符串比较器?

java - 有没有办法通过注释向方法添加特定条件?