我有以下问题:
如何将以下代码片段转换为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());
答案 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());