如何使用 java Stream API 从 Map<Object,Integer> 收集数据到 List<Object>?

我有Map<Nominal, Integer>对象及其计数的地图:

a -> 3
b -> 1
c -> 2

我需要从中得到这样的List<Nominal>

a
a
a
b
c
c

如何使用 Stream API 执行此操作?

回答

我们可以使用Collections::nCopies来达到预期的效果:

private static <T> List<T> transform(Map<? extends T, Integer> map) {
return map.entrySet().stream()
.map(entry -> Collections.nCopies(entry.getValue(), entry.getKey()))
.flatMap(Collection::stream)
.collect(Collectors.toList());
}

Ideone demo


评论

在演示中,我改变了按键式的Map,从NominalObject自定义Nominal未提供。但是,更改密钥类型不会影响解决方案。


以上是如何使用 java Stream API 从 Map&lt;Object,Integer&gt; 收集数据到 List&lt;Object&gt;?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>