• Java对List集合排序


    1.单属性变量集合排序,如LIst<Integer>

     List<Integer> intList = new ArrayList<>();
            intList.add(54);
            intList.add(7674);
            intList.add(636);
            intList.add(4325);
            intList.add(21);
            intList.add(432143);
            Collections.sort(intList);
            for (Integer i : intList) {
                System.out.print(i + " ");
            }

    结果是21 54 636 4325 7674 432143

    Collections类提供了对集合操作的一些方法,注意是Collections而不是Collection,后者是集合的顶级接口。

    使用Collerctions类的sort()方法实现升序排序,相反的,方法reverse()则实现降序排序。

    2.多属性对象集合排序,如List<Student>
    Student类就不写了,共三个属性,配上get,set就行。

     List<Student> students = new ArrayList<>();
            students.add(new Student("狗蛋",90,180));
            students.add(new Student("黑子",80,165));
            students.add(new Student("旺财",91,170));
            students.add(new Student("翠花",80,182));
            students.add(new Student("铁牛",75,180));
            students.add(new Student("大根",82,172));
            students.add(new Student("傻蛋",90,168));
            students.add(new Student("富贵",80,178));
     
            System.out.println("原始数据:");
            for (Student s : students) {
                System.out.println(s.getName() + " " + s.getScore() + " " + s.getHeight());
            }
            System.out.println("按照分数升序排序:");
            students.sort(Comparator.comparing(Student::getScore));
            for (Student s : students) {
                System.out.println(s.getName() + " " + s.getScore() + " " + s.getHeight());
            }

    抄个Comparator的介绍放这里:

    强行对某个对象 collection 进行整体排序的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。当且仅当对于一组元素 S 中的每个e1和e2 而言,c.compare(e1, e2)==0与 e1.equals(e2) 具有相等的布尔值时,Comparator c 强行对 S 进行的排序才叫做与 equals 一致的排序。

    关键字"::"来自Java8,可以通过 `::` 关键字来访问类的构造方法,对象方法,静态方法。

    如果要对多个属性进行排序,继续向后添加排序规则即可。

    // 先按照score的升序,然后按照height的升序
    students.sort(Comparator.comparing((Student::getScore)).thenComparing(Student::getHeight).reversed());
    // 先按照score的升序,然后按照height的降序
    students.sort(Comparator.comparing((Student::getScore)).thenComparing(Student::getHeight).reversed().reversed());
    // 先按照score的降序,然后按照height的降序
    students.sort(Comparator.comparing((Student::getScore)).reversed().thenComparing(Student::getHeight).reversed().reversed());
  • 相关阅读:
    JArray
    签名和验签
    private、protected、public和internal的区别
    DataTime.Now.Ticks
    NameValuePair 简单名称值对节点类型
    01安卓目录结构
    SDK目录结构
    java wait和notify及 synchronized sleep 总结
    安卓常用的第三方框架
    OkHttp使用教程
  • 原文地址:https://www.cnblogs.com/shisanye/p/16362711.html
Copyright © 2020-2023  润新知