java 8 streamlambda表达式对list操作分组过滤求和最值排序去重

Posted ZC_Wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 8 streamlambda表达式对list操作分组过滤求和最值排序去重相关的知识,希望对你有一定的参考价值。

1.分组
通过groupingBy分组指定字段
list.stream().collect(Collectors.groupingBy(User::getSex));

2.过滤
通过filter方法过滤某些条件
list.stream().filter(a -> !a.getJobNumber().equals("201901")).collect(Collectors.toList());

3.求和
基本类型:先mapToInt,然后调用sum方法
List.stream().mapToInt(User::getAge).sum();
大数类型:reduce调用BigDecimal::add方法
List.stream().map(User::getFamilyMemberQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);

4.最值
最大值
List.stream().map(User::getEntryDate).max(Date::compareTo).get();
最小值
List.stream().map(User::getEntryDate).min(Date::compareTo).get();

5.排序
list.stream().sorted((o1, o2)->o1.getItem().getValue().
compareTo(o2.getItem().getValue())).
collect(Collectors.toList());

sort()
       单字段排序,根据id排序	list.sort(Comparator.comparing(Obj::getItem));
   多字段排序,根据id,年龄排序	list.sort(Comparator.comparing(Obj::getItem).thenComparing(Obj::getItem));

6.去重
通过distinct方法
List.stream().distinct().collect(Collectors.toList());
对属性
重写方法

7.获取list某个字段组装新list
List.stream().map(a -> a.getId()).collect(Collectors.toList());

以上是关于java 8 streamlambda表达式对list操作分组过滤求和最值排序去重的主要内容,如果未能解决你的问题,请参考以下文章

[Java 8] Lambda表达式对递归的优化(上) - 使用尾递归 .

Java 8 lambda表达式20180404

[Java 8] Lambda表达式对递归的优化(下) - 使用备忘录模式(Memoization Pattern) .

jquery 怎么用正则提取字符串里面的内容?

Java 8 中的 Lambda 表达式

Java 8 vs. Scala: Lambda表达式