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

LSt*_*ike 7 java arraylist java-8 java-stream

我有以下qustion:

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

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

不知道并开始以下内容:

List<String> tmpAdresses = users.stream().map((User user) -> user.getAdress());
Run Code Online (Sandbox Code Playgroud)

Lin*_*ica 23

您需要将collect您的流转换为List:

List<String> adresses = users.stream()
    .map(User::getAdress)
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

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

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


Pio*_*r R 9

它扩展了你的想法:

List<String> tmpAdresses = users.stream().map(user ->user.getAdress())
.collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)

  • 如果新答案比另一个答案更好/替代,您应该添加一个新答案。解释一下如何更好。 (7认同)