Java Array.sore怎么实现两个条件排序,网上说传入什么接口,可是我不会,有没有可以运行的代码看一下。
sort(T[] a, Comparator<? super T> c)你说的应该是这种方法,实现Comparator比较器。下面的是先比较姓名,姓名一致的时候在比较年龄,这边年龄用的Integer。
Student[] students = new Student[4];
Student student = Student.of("tom",18);
Student student1 = Student.of("may",19);
Student student2 = Student.of("alice",18);
Student student3 = Student.of("tom",19);
students[0] = student;
students[1] = student1;
students[2] = student2;
students[3] = student3;
Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
int c1 = o1.getName().compareTo(o2.getName());
if (c1 == 0){
return o1.getAge().compareTo(o2.getAge());
}
return c1;
}
});
System.out.println(Arrays.toString(students));
@Data
@AllArgsConstructor(staticName = "of")
public class Student {
private String name;
private Integer age;
}