使用JDK自带的sort方法对数组或集合进行排序

使用JDK自带的sort方法对数组或集合进行排序

一,Array.sort(int[])方法 ,对数组进行排序。

  • 常规用法
        int[] nums={11,6,12,3,2,7};
        Arrays.sort(nums);
  • 进行自定义排序
    用Array.sort(int[] ,Comparator)方法数组对对象进行排序,自定义排序方式。
    例子:
    我们有10个同学,将他们放在一个数组中,
    老师有时候想把这些同学按成绩高低进行排序。
    有时候又想按他们年龄来排序。参照下面代码。

 public static void main(String[] args) {
 class Student{
            int age;  //年龄
            int grade; //成绩

            @Override
            public String toString() {
                return "student{" +
                        "age=" + age +
                        ", grade=" + grade +
                        '}';
            }
        }

        Student[] students=new Student[10];
        for (int i = 0; i <10 ; i++) { //添加10个同学
            students[i]=new Student();
            students[i].age=10+i;
            students[i].grade=(int)(Math.random()*100)+1;
        }
        Arrays.sort(students,(a,b)->a.grade-b.grade);
        System.out.println("以成绩排序"+Arrays.toString(students));

        Arrays.sort(students,(a,b)->a.age-b.age);
        System.out.println("以年龄排序"+Arrays.toString(students));
}

二, Collections.sort(list, new Comparator())方法,对集合进行排序。

  • 常规用法。
       List list=new ArrayList<>();
        for (int i = 0; i <10 ; i++)  list.add(i);
        Collections.sort(list);
        System.out.println(list);
        Collections.sort(list,Collections.reverseOrder());//倒序排列
        System.out.println(list);
  • 进行自定义排序
    还是上面那个例子,只是现在把学生放到了list集合里面。
    代码参考。附2种比较器的写法。
    public static void main(String[] args) {

        
        class Student{
            int age;  //年龄
            int grade; //成绩

            @Override
            public String toString() {
                return "student{" +
                        "age=" + age +
                        ", grade=" + grade +
                        '}';
            }
        }

         List studentList=new ArrayList<>();
        for (int i = 0; i <10 ; i++) { //添加10个同学
            Student student=new Student();
            student.age=10+i;
            student.grade=(int)(Math.random()*100)+1;
            studentList.add(student);
        }
        
        //比较器写法1。(较简洁)
        Collections.sort(studentList,(a,b)->a.grade-b.grade);
        System.out.println("以成绩排序"+studentList);

        //比较器写法2。
        Collections.sort(studentList, new Comparator() {
            @Override
            public int compare(Student o1, Student o2) {
                return o1.age-o2.age;
            }
        });
        System.out.println("以年龄排序"+studentList);

    }

你可能感兴趣的:(java编程设计,排序,jdk)