我想从一个
Pojo 1: Key:a value:1
Pojo 2: Key:a value:2
Pojo 3: Key:b value:3
Pojo 4: Key:b value:4
我想得到一个大小为 2 的
如何使用 Java 8 lambda 最好地实现此功能?
List<Pojo>
转换为一个 Map<String, List<Pojo>>
,其中 Map
的键是 Pojo
中的一个 String key
值。例如,给定以下内容:Pojo 1: Key:a value:1
Pojo 2: Key:a value:2
Pojo 3: Key:b value:3
Pojo 4: Key:b value:4
我想得到一个大小为 2 的
Map<String, List<Pojo>>
,其中键 "a" 具有 Pojos 1 和 2,键 "b" 具有 Pojos 3 和 4。如何使用 Java 8 lambda 最好地实现此功能?
mapping(Function.identity(), toList())
的意义是什么?identity()
意味着“没有映射”,那么为什么还要使用映射收集器呢?只需将其替换为单独的toList()
,然后您就会得到groupingBy(t -> t.getKey(), HashMap::new, toList())
,这几乎描述了groupingBy
的默认值,除了当仅使用默认值时,结果不能保证是HashMap
。因此,当默认值适用时(即您不需要HashMap
),请像Eran的答案中所示使用默认值。 - Holger