zoukankan      html  css  js  c++  java
  • java 8 stream、lambda表达式对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());

  • 相关阅读:
    Lyndon Word & The Runs Theorem
    Codeforces 1477F. Nezzar and Chocolate Bars
    Codeforces Round #700 (Div.1)
    kubeadm 安装 k8s
    centos7更新阿里yum源
    CF1186 F. Vus the Cossack and a Graph
    CF1152 D. Neko and Aki's Prank
    CF803 C. Maximal GCD
    CF1180 B. Nick and Array
    CF1186 D. Vus the Cossack and Numbers
  • 原文地址:https://www.cnblogs.com/ZCWang/p/12886708.html
Copyright © 2011-2022 走看看