JavaList集合Stream流的使⽤(常⽤⽅法)
引⾔:Java stream流在对集合的操作中提供了很多⾮常好⽤的⽅法,下⾯的这些⽅法是在开发中⽐较常⽤的,可以实现对集合数据的过滤、查、求和等等。
1、按条件查,到了返回⼀个对象,反之返回null
// 查id为6的⽤户信息
User user =getUsers().stream().filter(p -> p.getId()==6).findAny().orElse(null);
System.out.println(user != null ? String(): null);
2、按条件筛选数据,返回⼀个集合
// 查age⼤于20的⽤户信息
List<User> users =getUsers().stream().filter(p -> p.getAge()>20).List());
java stream
System.out.println(users);
3、对BigDecimal类型数据进⾏求和
// 统计所有⽤户的总钱数
BigDecimal totalMoney = users.stream().filter(p -> p.getMoney()!= null).map(User::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println(totalMoney);
4、按条件统计数量
// 统计⽤户数量
long count =getUsers().stream().filter(p -> p.getName()!= null).count();
System.out.println(count);
5、按条件对数据进⾏求和
// ⽤户的评平均年龄
double totalAge =getUsers().stream().filter(p -> p.getName()!= null).mapToDouble(User::getAge).sum();
System.out.il(totalAge / count));
6、按条件对数据进⾏分组
// ⽤户按照年龄分组
Map<Integer, List<User>> userMap =getUsers().stream().upingBy(User::getAge));
System.out.println(userMap);
7、List泛型集合按id分组,获取id分组之后最⼩值
List<Fog> result =new ArrayList<>();
fogs.stream().upingBy(Fog::getStationId)).forEach((key, values)->{
values.stream().min(Comparatorparing(Fog::getValue)).ifPresent(fog -> result.add(toFog(key, Value())));
});
8、List泛型集合按id分组,获取id分组之后最⼤值
List<WindExtreme> result =new ArrayList<>();
windExtremes.stream().upingBy(WindExtreme::getStationId)).forEach((key, values)->{
values.stream().max(Comparatorparing(WindExtreme::getSpeed)).ifPresent(windExtreme -> result.add(toWindExtreme(key, Spee d())));
});

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