Java 8 List<T> 到 Map<K, V>

标签 java lambda java-8 java-stream

我想将对象列表转换为 map ,其中 map 的键和值作为属性位于列表中对象内。

这里是这种转换的 Java 7 片段:

private Map<String, Child> getChildren(List<Family> families  ) {
        Map<String, Child> convertedMap = new HashMap<String, Child>();

        for (Family family : families) {
            convertedMap.put(family.getId(), family.getParent().getChild());
        }
        return convertedMap;
    }

最佳答案

它应该类似于...

Map<String, Child> m = families.stream()
    .collect(Collectors.toMap(Family::getId, f -> f.getParent().getChild()));

关于Java 8 List<T> 到 Map<K, V>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26049187/

相关文章:

lambda - 创建一个 Lisp 宏,可以将 lambda 应用于上下文中的列表

c# - SQLKata 动态 Where 子句

javadoc : error - invalid flag: -Xdoclint:none, 当我使用 java 7 时,它在 java 8 中有效

java - Jasper Report Pdf 在 Eclipse 中导出正常,但从 Jar 文件导出非常慢

java - Elasticsearch 使用 RestHighLevelClient 设置限制和偏移量

c# - 使用 LINQ/lambdas 构建以逗号分隔的内部异常消息字符串

database - java 7 和 8 之间重载函数的源代码兼容性

Java 8 流并从调用 boolean 方法设置属性

Java邮件 : Could not connect to SMTP server

java - 无法调用方法 FirebaseApp.delete()