java - 列表列表到 MapList Java 8 Lambda 的映射列表

标签 java lambda collections java-8 java-stream

我想转换 List<Map<Integer, List<Object>>>Map<Integer, List<Object>>与 lambda 但我完全迷失了,到目前为止我得到了这个;

public Map<Integer, List<Object>> getMapofList(List<Map<Integer, List<Object>>> listMaps) {

    return listMaps
            .stream()
            .filter(listMap -> listMap //Obtained Map
                    .entrySet()
                    .stream()
                    .filter(integerListEntry -> nonNull(integerListEntry.getValue())) //Check if there is a List<Object> not null
                    . //Not sure how to continue to finally just return a Map<Integer, List<Object>>
}

任何提示或帮助将不胜感激!

最佳答案

一种解决方案是:

return listMaps
        .stream()
        .flatMap(e -> e.entrySet()
                       .stream())
        .filter(e -> e.getValue() != null)
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

或者如果可能有重复的键,那么您可以使用 groupingBy 收集器,如下所示:

return listMaps
         .stream()
         .flatMap(e -> e.entrySet()
                        .stream())
         .filter(e -> e.getValue() != null)
         .collect(Collectors.groupingBy(Map.Entry::getKey, 
               Collectors.mapping(Map.Entry::getValue, Collectors.toList())));

关于java - 列表列表到 MapList Java 8 Lambda 的映射列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48329900/

相关文章:

java - 如何在 If 语句中使用数组

java - 为什么Android Studio Proguard mapping.txt文件为空(0 KB)?

java - 如何以编程方式启动/停止 EJB

C++11 - 捕获中的 lambda 函数传递向量并修改它

android - 使用 jack 时,Lambda 表达式因 Android 中的 IncompatibleClassChangeError 而崩溃

java - TreeSet 是否可能等于 HashSet 但 HashSet 不等于 TreeSet

java - 使用 selenium webdriver 处理、存储和迭代大量窗口弹出窗口时应首选哪个集合?

java - 在 PubSubToBigQuery 模板中定义 TableSchema

mongodb - 如何在 MongoDB 中删除或删除集合?

java - 在 map 的 map 中切换键