在网上查了很多资料,对于Comparator和Comparable的区别,总是看不太懂,有些特别的深奥;对于Comparator和Comparable的区别我是这样理解的:使用的是Comparator,业务方自定义排序的规则,也就是外部调用类,自定义排序规则;使用的是Comparable,Comparable是本身固定这种排序规则;如果不对,或者有补充,请务必告诉我,蟹蟹。
下面是代码,分别就Comparator和Comparable对类按照姓名进行排序
package chapter9; import java.util.Comparator; import java.util.Set; import java.util.TreeSet; public class TestMain { public static void main(String[] args) { Sett_compaptors=new TreeSet<>(new Comparator () { @Override public int compare(T_Compaptor o1, T_Compaptor o2) { return (o1.getName().compareTo(o2.getName())); } }); t_compaptors.add(new T_Compaptor("jack", 32)); t_compaptors.add(new T_Compaptor("tom", 22)); t_compaptors.add(new T_Compaptor("mary", 35)); t_compaptors.add(new T_Compaptor("tim", 11)); t_compaptors.add(new T_Compaptor("tony", 49)); t_compaptors.add(new T_Compaptor("dd", 30)); System.out.println(t_compaptors); System.out.println("---------------------------"); Set t_comparables=new TreeSet<>(); t_comparables.add(new T_Comparable("jack", 32)); t_comparables.add(new T_Comparable("tom", 22)); t_comparables.add(new T_Comparable("mary", 35)); t_comparables.add(new T_Comparable("tim", 11)); t_comparables.add(new T_Comparable("tony", 49)); t_comparables.add(new T_Comparable("dd", 30)); System.out.println(t_comparables); } } class T_Compaptor{ String name; int age; public T_Compaptor(){} public T_Compaptor(String name,int age){ this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "T_Compaptor{" + "name='" + name + ''' + ", age=" + age + '}'; } } class T_Comparable implements Comparable { private String name; private int age; public T_Comparable(String name,int age){ this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "T_Comparable{" + "name='" + name + ''' + ", age=" + age + '}'; } @Override public int compareTo(T_Comparable o) { return this.getName().compareTo(o.getName()); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)