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

时间:2018-08-08 13:14:24

标签: java arraylist java-8 java-stream

我有以下问题:

如何将以下代码片段转换为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());

4 个答案:

答案 0 :(得分:15)

您需要collect将流放入列表:

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

有关其他Collectors的更多信息,请访问documentation

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:-1)

它扩展了您的想法:

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

答案 3 :(得分:-2)

您可以使用它来将Long转换为String

List<String> ids = allListIDs.stream()
                             .map(listid-> String.valueOf(listid))
                             .collect(Collectors.toList());