有时候在做后端业务的时候需要对list进行操作 如筛选,
java 8 引入了流的操作
List<AdminUser> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
AdminUser adminUser = new AdminUser();
adminUser.setUserName("leikai");
list.add(adminUser);
}
for (int i = 0; i < 10; i++) {
AdminUser adminUser = new AdminUser();
adminUser.setUserName("wushi");
list.add(adminUser);
}
创建了一个用户的list 对象
对于这个流有众多的方法,我常试用的方法就是filter 和map 方法。这两个方法和js 中的数组的filter、map方法基本类似
Stream<AdminUser> adminUserStream = list.stream().filter(d -> d.getUserName().equals("wushi")).map((adminUser -> {
adminUser.setPassword("mima");
return adminUser;
}));
filter 和js的一样返回一个返回为true的新数组。map也会传入一个函数参数,函数的对象就是list里面每一个实例。假如想把这个实例里面的某一个字段(如果类型为String)做为list 返回 也可以
Stream<String> wushi = list.stream().filter(d -> d.getUserName().equals("wushi")).map(AdminUser::getPassword);
最后可以再将这个stream转换为list
wushi.collect(Collectors.toList());