我有一个多图Map<T,List<L>> map
,我需要一个列表,其中包含地图中值的所有值,即List<L>
。使用map.values()
我得到List<List<L>>
,但这不是我想要的。
有人知道没有循环的干净解决方案吗?
答案 0 :(得分:3)
如果您使用的是Java 8,则可以通过Stream#flatMap
在单个L
中收集所有List<L>
的所有List<L>
值:
final List<L> list = map
// get a Collection<List<L>>
.values()
// make a stream from the collection
.stream()
// turn each List<L> into a Stream<L> and merge these streams
.flatMap(List::stream)
// accumulate the result into a List
.collect(Collectors.toList());
否则,可以应用for-each
Collection#addAll
方法:
final List<L> list = new ArrayList<>();
for (final List<L> values : map.values()) {
list.addAll(values);
}