常用的lamada表达式
示范操作类
public class User{ String name; Integer age; Integer sex;
BigDecimal money;
}
List<User> list= new Array()<>; //获取某个字段集合 List<String> list1=list.stream().map(User::getName).collect(Collectors.toList); //过滤满足某条件的对象集合(age>18) List<User>list2=list.stream().filter(user>user.getAge>18)..collect(Collectors.toList); //根据集合特定2个字段转为map Map<String,Integer>map1=list.lstream().collect(Collertors.toMap(User::getSex,User::getAge); //根据将集合变成键值对 Map<String,List<User>>map1= list.list.stream().collect(Collertors.toMap(User::getSex,user->user); //根据某个字段分组排列集合(性别) Map<String,List<User>>map= list.list.stream().collect(Collertors.groupingBy(User::getSex)); //获取某个值最高对象 User user=list.stream().max(Comparator.comparing(user->user.getAge)).get();
//累计计算某字段值
BigDecimal big=list.stream().map(User::getMoney).reduce(Bige.ZERO,BigDecimal::add)
Coparator
//返回 对象集合以类属性一升序排序 list.stream().sorted(Comparator.comparing(类::属性一)); //返回 对象集合以类属性一降序排序 注意两种写法 list.stream().sorted(Comparator.comparing(类::属性一).reversed());//先以属性一升序,结果进行属性一降序 list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()));//以属性一降序 //返回 对象集合以类属性一升序 属性二升序 list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二)); //返回 对象集合以类属性一降序 属性二升序 注意两种写法 list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二));//先以属性一升序,升序结果进行属性一降序,再进行属性二升序 list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二));//先以属性一降序,再进行属性二升序 //返回 对象集合以类属性一降序 属性二降序 注意两种写法 list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一升序,升序结果进行属性一降序,再进行属性二降序 list.stream().sorted(Comparator.comparing(类::属性一,Comparator.reverseOrder()).thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一降序,再进行属性二降序 //返回 对象集合以类属性一升序 属性二降序 注意两种写法 list.stream().sorted(Comparator.comparing(类::属性一).reversed().thenComparing(类::属性二).reversed());//先以属性一升序,升序结果进行属性一降序,再进行属性二升序,结果进行属性一降序属性二降序 list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(类::属性二,Comparator.reverseOrder()));//先以属性一升序,再进行属性二降序 //空/Null数据排序 list.stream().sorted(Comparator.comparing(类::属性一).thenComparing(item -> item.属性二, Comparator.nullsLast(Date::compareTo))).collect(Collectors.toList()); //空/Null数据分组 Map<String, List<类>> map = list.stream().collect(Collectors.groupingBy(item -> { if (item.属性一 == null || item.属性一.equals("")) { return ""; } return DateFormat.getDateInstance().format(item.属性一); }))