zoukankan      html  css  js  c++  java
  • List集合流处理类型小结

    本文为博主原创,未经允许不得转载

    对应实体类

    import lombok.Getter;
    import lombok.Setter;
    
    @Getter
    @Setter
    public class Student {
        
        private String name;
        
        private int age;
        
        private String className;
    
        private String birthday;
    }

    1.根据字段取出某一个字段属性的集合

    List<Student> studentList = new ArrayList<>();
         List<int> newList = studentList.stream().map(Student::getAge).collect(Collectors.toList());
         for (Student student : newList) {
            System.out.println(student.getName()+"---"+student.getAge());
        }

    2。List根据某个字段升序排序

    List<Student> studentList = new ArrayList<>();
        List<Student> newList = studentList.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());
        for (Student student : newList) {
        System.out.println(student.getName()+"---"+student.getAge());
    }

    3.List根据某个字段排序降序

    List<Student> list = new ArrayList<>();
        list = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList());

    4.获取某一字段属性值对应的数据集合

    List<Student> resultList = studentList.stream()
            .filter((Student stu) -> area.equals(stu.getAge()))
            .collect(Collectors.toList());

    5.根据某个字段值获取出对应的对象   

    Student stu = studentList.stream()
            .filter(p -> "2018-08-12 12:10".equals(p.getBirthday()))
            .findAny().orElse(null);

    6.对集合元素去重

    List<String> nameList = new ArrayList<>();
    nameList = nameList.stream().distinct().collect(Collectors.toList());

    7.对集合某一个属性进行求和

    List<Student> stuList = new ArrayList<>();    
    double totalAge = stuList.stream().collect(Collectors.summingDouble(Student::getAge));

     8。获取集合中的某一个属性的数据集合并去重

     // 所有的ip信息对象集合
    List<NetiIpInfo> netInfoList = netIpService.queryNetIpList();
    // 从所有IP信息对象集合中根据机房id过滤出所有机房id不同的数据对象,并根据机房id去重 List
    <NetiIpInfo> distinctIpRoomList = netInfoList.stream().collect(Collectors .collectingAndThen(Collectors.toCollection(() -> new TreeSet<>( Comparator.comparing(NetiIpInfo::getIpRoomId))), ArrayList::new));

    代码是很简答,很优雅的

    解释一下

    list.stream(): 是把list集合转化为stream集合

    sorted(): 进行排序,其中Comparator.comparing(Student::getAge)表示按照年纪排序,

    .reversed()表示是逆序,因为默认情况下,不加.reversed 是升序的

    collect(Collectors.toList()): 再次将排序后的stream集合转化为list集合

    .findAny()表示将其中任意一个返回;

    .orElse(null)表示如果一个都没找到返回null

    distinct() 对集合元素或对象去重

    summingDouble() 对集合元素进行求和为double类型数据

  • 相关阅读:
    python3 day02 大纲
    python3 练习题 day02
    python3 练习题(购物车)
    python3 练习题(多级菜单)
    python3 day01 大纲
    python3 练习题 day01
    vuex 的基本使用
    jquery中Ajax使用Promise指定成功回调函数
    使用Promise 解决回调地狱
    Promise 概念及操作
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/10737549.html
Copyright © 2011-2022 走看看