Java 8 lambda 从对象列表创建字符串列表

新手上路,请多包涵

我有以下问题:

如何将以下代码片段转换为 Java 8 lambda 样式?

 List<String> tmpAdresses = new ArrayList<String>();
for (User user : users) {
    tmpAdresses.add(user.getAdress());
}

不知道并从以下内容开始:

 List<String> tmpAdresses = users.stream().map((User user) -> user.getAdress());

原文由 LStrike 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 372
2 个回答

你需要 collect 你的 Stream 变成 List

 List<String> adresses = users.stream()
    .map(User::getAdress)
    .collect(Collectors.toList());

有关不同 Collectors 的更多信息,请访问 文档

User::getAdress is just another form of writing (User user) -> user.getAdress() which could as well be written as user -> user.getAdress() (because the type User will be inferred by the编译器)

原文由 Lino 发布,翻译遵循 CC BY-SA 4.0 许可协议

它扩展了你的想法:

 List<String> tmpAdresses = users.stream().map(user ->user.getAdress())
.collect(Collectors.toList())

原文由 Piotr Rogowski 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题