转换 Java 列表
背景:
将对象列表转换为映射是一项常见任务。 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中文网其他相关文章!