自然排序与比较器排序
自然排序:
其实就是接口对实现它的每个类对象强行进行整体排序,这种排序就是自然排序。它只有一个方法是compareTo方法,也被称为自然比较方法。
实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。(Arrays.sort(T[] a))
T - 可以与此对象进行比较的那些对象的类型
o - 要比较的对象
compareTo(T o)方法比较此对象与指定对象的顺序,如果该对象大于、等于或小于指定对象,则返回值为正整数、零或负整数。
public T compareTo(T o){
return this.(属性或方法) - o.(属性或方法);
}
import java.lang.comparable;
public class Student{
private int id;
private int sorce;
public Student(){
}
public Student(int id,int sorce){
this.id=id;
this.sorce=sorce;
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public int getSorce(){
return sorce;
}
public void setSorce(int sorce){
this.sorce=sorce;
}
public Student compareTo(Student s){
return this.getSorce()-s.getSorce();
}
}
比较器排序:
强行对某个对象 collection 进行整体排序 的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。(Arrays.sort(T[] a, Comparator<? super T> c))
Comparator接口有两个方法,一个是compare(T o1,T o2)方法,一个则是equals(Object o)方法。
T - 此 Comparator 可以比较的对象类型
o1 - 要比较的第一个对象。
o2 - 要比较的第二个对象。
compare(T o1,T o2)方法功能是比较用来排序的参数。根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
public T compare(T o1,T o2){
return o1.(属性或方法)-o2.(属性或方法);
}
类似于上面:
public Student compare(Student s1,Student s2){
return s1.getId()-s2.getId();
}