Comparator
package com.mwq.comparator; public class BeautyGirl { private int age; private Double height; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Double getHeight() { return height; } public void setHeight(Double height) { this.height = height; } @Override public String toString() { return "美女{年龄:" + this.getAge() + "身高:" + this.getHeight() + "}"; } }
package com.mwq.comparator; import java.util.Comparator; /** * 实现美女的排序 */ public class BeautyGirlComparator implements Comparator<BeautyGirl> { @Override public int compare(BeautyGirl girl1, BeautyGirl girl2) { // 姑且把年龄放在第一位 if (girl1.getAge() == girl2.getAge()) { return compareHeight(girl1, girl2); } else { return girl1.getAge() - girl2.getAge(); } } private int compareHeight(BeautyGirl girl1, BeautyGirl girl2) { // 把身高放在第二位 return girl1.getHeight().compareTo(girl2.getHeight()); } }
这样是使用排序的时候,只要你指定一个新的规则,就会按照新的规则来排序,而不需要再变更BeautyGirl类。例如,你可以按照身高优先、年龄次之的排序。
总结:两者的区别就在于排序规则的制定,如果排序规则善变,那么使用comparator是个好办法,如果规则固定,实现comparable更好,至少少写一个类。