Java 8 流:列表到按 [重复] 分组的平面地图
Posted
技术标签:
【中文标题】Java 8 流:列表到按 [重复] 分组的平面地图【英文标题】:Java 8 stream: list to flat map grouped by [duplicate] 【发布时间】:2018-04-12 07:49:26 【问题描述】:我有以下情况。 (伪代码)
class A
id;
List<B> bs;
class B
我想知道如何转换 List os As -> Map of Bs
List<A> as;
// the Map key is A.id (Map<A.id, List<B>>)
Map<Integer, List<B>> bs = as.stream()
.map(a ->a.getBs())
.collect(// I dont know what to add here ???);
【问题讨论】:
Map<Integer, B>
或 Map<Integer, List<B>>
?
你打算如何处理一个键的几个值?
对不起,我的意思是 Map好像你想要这样的时间:
Map<Integer, List<B>> bs = as.stream()
.collect(Collectors.toMap(A::getId, A::getBs));
【讨论】:
假设id
是唯一的...
@shmosel 同意...
我的解释是 OP 想要对多个 bs
进行分组和展平,但我可能错了。
@shmosel 确实,最初的问题上下文和问题标题仍然符合直觉。以上是关于Java 8 流:列表到按 [重复] 分组的平面地图的主要内容,如果未能解决你的问题,请参考以下文章
通过流将带有列表的列表对象转换为Java 8中的映射[重复]