Java8利⽤stream对List<Object>提取某个属性形成新的数组现在我要将⼀个List<User>抽取User的name创建出⼀个List<String> nameList的集合
这个是我的实体 , 引⼊了lombok插件, getset这⾥就省略了
@Data
@Accessors(chain =true)
public class User {
private String name;
private Integer age;
}
测试
@Test
public void test01(){
List<User> users =new LinkedList<>();
users.add(new User().setName("⼩⼀").setAge(20));
users.add(new User().setName("⼩⼆").setAge(14));
users.add(new User().setName("⼩三").setAge(18));
List<String> nameList = users.stream().map(User::getName).List());
System.out.println(nameList);
}
输出结果
[⼩⼀,⼩⼆,⼩三]
曾经我有疑问, 那如果我的对象不是实体⽽是Map呢, 我要去抽取key出来重新组成数组是否可⾏?
经过测试, 是可以的,
@Test
public void test02(){
List<Map<String, Object>> maps =new LinkedList<>();
maps.add(new HashMap(){{
put("name","⼩四");
put("age",12);
}});
maps.add(new HashMap(){{
put("name","⼩五");
put("age",18);
}});
maps.add(new HashMap(){{
put("name","⼩六");
put("age",22);
}});
List<String> nameList = maps.stream().map(item -> ("name").toString()).List());
System.out.println(nameList);
}
输出结果
[⼩四,⼩五,⼩六]
结论:
list.stream().map()⽅法接⼝的源码
<R> Stream<R>map(Function<?super T,?extends R> mapper); Function类型参数只要⾥⾯return⼀个结果内容即可
甚⾄还可以在⾥⾯实现业务逻辑,判断
maps.stream().map(item ->{
System.out.("name"));
System.out.("age"));
//⼀定要返回⼀个结果
java ("name");
}).List());

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。