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 把方便快捷
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于