java - 如何将 Map<T,List<L>> 映射中的值添加到 List<L>?

标签 java list dictionary

<分区>

我有一个多图 Map<T,List<L>> map我需要一个包含 map 中所有值的列表,即 List<L> .与 map.values()我得到一个List<List<L>> ,但这不是我想要的。

有人知道没有循环的干净解决方案吗?

最佳答案

如果您使用的是 Java 8,您可以收集所有 L来自所有 List<L> 的值s 在单个 List<L>通过 Stream#flatMap :

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);
}

关于java - 如何将 Map<T,List<L>> 映射中的值添加到 List<L>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47182923/

相关文章:

java - vaadin 中的数据库表更新

c# - 使用 Linq 列表到字典的转换

c++ - 使用空的 weak_ptr 作为参数调用 map::count 是否安全?

swift - 键和值具有特定类型的字典类型的扩展

java - 如何替换 H2 数据库中的枚举类型?

java - 从哪里获得 java 的 sql 库?

java - 我正在尝试将文件路径(4 个文件)和文件元数据存储到 hashmap。如何做到这一点?我正在使用蒂卡API

python - 比较Python中的字典列表和嵌套列表

java - 如何检查我的列表是否已包含某个字符串。 Java 安卓 SDK

c# - 字典性能提升