Lists.transform 的使用
Lists.transform:能够轻松的从一种类型的 list 转换为另一种类型的 list。
Map<String,String> map = Maps.newHashMap();
map.put("a","testa");
map.put("b","test2");
map.put("c","test3");
Map<String,String> map = Maps.newHashMap();
map2.put("a","test3");
map2.put("b","testb");
map2.put("d","testc");
List<Map<String,String>> list2=Lists.newArrayList();
list2.add(map);
list2.add(map2);
List<String> list3=Lists.transform(list2,s->s.get("a"));
list3.forEach(s -> System.out.println(s));
结果如下
testa
testa2
还有采坑的,得需要注意下
List<User> userdbs = Lists.newArrayList(new User("zhangsan", "20"),
new User("lisi", "24"), new User("wangwu", "30"));
List<UserVo> userVos = Lists.transform(userdbs,xx ->{
return new UserVo(xx.getName(),xx.getId());
});
List<UserVo> userVosNew =userdbs.stream().map(xx->{
return new UserVo(xx.getName(),xx.getId());
}).collect(Collectors.toList());
userdbs.forEach(xx->xx.setName(xx.getName()+"_test"));
userVos.forEach(xx -> System.out.println(xx.getName()));
System.out.println("=======change lambda 方式");
userVosNew.forEach(xx -> System.out.println(xx.getName()));
结果
zhangsan_test
lisi_test
wangwu_test
=======change lambda 方式
zhangsan
lisi
wangwu
引用实体如下 ,未添加 set,get 方法
class UserVo{
private String id;
private String name;
}
class User{
private String id;
private String name;
}
对原数据集 users 的修改会直接影响到 Lists.transform 方法返回的结果 userVos,
解决方案还是用 lambda 把方便快捷
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于