• 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类型数据

  • 相关阅读:
    tomcat7简单优化
    java向上转型和向下转型
    字符串循环移位
    测试覆盖率问题
    悬挂指针
    标准库string的用法探讨
    野指针问题
    Clock函数用法
    配置信息写入到.ini文件中的方法
    数组指针和数组引用做参数的区别
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/10737549.html
Copyright © 2020-2023  润新知