【发布时间】:2015-06-10 12:09:39
【问题描述】:
我想取List<Pojo> 和return 和Map<String, List<Pojo>>,其中Map 的键是Pojo 中的String 值,我们称之为String key。
为了澄清,给出以下内容:
Pojo 1:键:值:1
Pojo 2:键:值:2
Pojo 3:键:b 值:3
Pojo 4:键:b 值:4
我想要一个 Map<String, List<Pojo>> 和 keySet() 大小为 2,其中键“a”具有 Pojos 1 和 2,而键“b”具有 pojos 3 和 4。
我怎样才能最好地使用 Java 8 lambdas 实现这一点?
【问题讨论】:
-
有什么问题?
-
@Eran 我已经更新了问题。
-
mapping(Function.identity(), toList())的意义何在?identity()意味着“没有映射”,那么为什么还要使用映射收集器呢?只需用唯一的toList()替换它,你最终会得到groupingBy(t -> t.getKey(), HashMap::new, toList()),它几乎描述了groupingBy的默认值,此外,当仅使用默认值时,结果不能保证是HashMap。因此,当默认值合适时(即您不需要HashMap),请使用Eran’s answer中所示的默认值 -
感谢@Holger,我意识到我的代码示例的不足之处,并在您的评论出现之前将其删除。您完全正确,谢谢您的建议,我很感激。
标签: java java-8 java-stream