目录
一,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));
}
排序二维数组
int[][] people={{7,0},{4,4},{7,1},{5,0},{6,1},{5,2}};
Arrays.sort(people, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0]==o2[0]) return o1[1]-o2[1];
return o1[0]-o2[0];
}
});
二, Collections.sort(list, new Comparator())方法,对集合进行排序。
常规用法。
List<Integer> 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<Student> 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<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o1.age-o2.age;
}
});
System.out.println("以年龄排序"+studentList);
}