首页 >Java >java教程 >如何使用流和 Lambda 有效地将 Java 列表转换为映射?

如何使用流和 Lambda 有效地将 Java 列表转换为映射?

Patricia Arquette
Patricia Arquette原创
2024-12-16 13:38:10629浏览

How Can I Efficiently Convert a Java List to a Map Using Streams and Lambdas?

转换 Java 列表到地图使用 Java 8 Streams 和 Lambda

背景:

将对象列表转换为映射是一项常见任务。 Java 7 及更低版本要求使用 for-each 循环进行命令式编码。在 Java 8 中,使用流和 lambda 提供了简洁而优雅的解决方案。

Java 7 解决方案:

private Map<String, Choice> nameMap(List<Choice> choices) {
    final Map<String, Choice> hashMap = new HashMap<>();
    for (final Choice choice : choices) {
        hashMap.put(choice.getName(), choice);
    }
    return hashMap;
}

不使用 Guava 的 Java 8 解决方案:

利用 Collectors 类,可以在单个流中完成转换操作:

Map<String, Choice> result =
    choices.stream().collect(Collectors.toMap(Choice::getName,
                                              Function.identity()));

这里,Choice::getName 检索名称键,Function.identity() 保留值。

以上是如何使用流和 Lambda 有效地将 Java 列表转换为映射?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn