猿问

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());


开满天机
浏览 236回答 3
3回答

千万里不及你

您需要将collect流转换为列表:List<String> adresses = users.stream()&nbsp; &nbsp; .map(User::getAdress)&nbsp; &nbsp; .collect(Collectors.toList());有关不同Collectors访问文档的更多信息User::getAdress只是另一种写法(User user) -> user.getAdress(),也可以写成user -> user.getAdress()(因为User编译器会推断出类型)

翻阅古今

使用上述答案的 lambda 收集器的另一种方法&nbsp;List<String>&nbsp;tmpAdresses=&nbsp;users &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.mapping(User::getAddress,&nbsp;Collectors.toList()));

喵喵时光机

它扩展了你的想法:List<String> tmpAdresses = users.stream().map(user ->user.getAdress()).collect(Collectors.toList())
随时随地看视频慕课网APP

相关分类

Java
我要回答