Java 8 lambda 从自定义类对象列表创建字符串列表

问题描述 投票:0回答:5

我有以下问题:

如何将以下代码片段转换为 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());
java string arraylist java-8 java-stream
5个回答
104
投票

您需要

collect
您的
Stream
变成
List
:

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

有关不同

Collectors
的更多信息,请访问文档

User::getAdress
只是
(User user) -> user.getAdress()
的另一种形式,也可以写成
user -> user.getAdress()
(因为类型
User
将由编译器推断)


9
投票

扩展了你的想法:

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

3
投票

使用 lambda 收集器的另一种方法,如上面的答案

 List<String> tmpAdresses= users
                  .stream()
                  .collect(Collectors.mapping(User::getAddress, Collectors.toList()));

0
投票

你已经快完成了,你只需要在列表中收集流。

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

-3
投票

您可以使用它将

Long
转换为
String
:

List<String> ids = allListIDs.stream()
                             .map(listid-> String.valueOf(listid))
                             .collect(Collectors.toList());
© www.soinside.com 2019 - 2024. All rights reserved.