一、Comparator
public int compare(Object o1,Object o2);
compare(Object o1,Object o2)方法是java.util.Comparator接口中的方法,它实际上用的是待比较对象的compareTo(Object o)方法。
二、Comparable
public int compareTo(Object o)
compareTo(Object o)方法是java.lang.Comparable接口中的方法,当对某个类的对象进行排序时,就必须实现Comparable接口,重写compareTo(Object o)方法
例1:
import java.lang.Comparable; import java.util.*; public class Test1 { class T{ Integer age;//这里使用int的包装类型Integer是因为int没有实现comparable接口,Integer实现了comparable接口 String name; T(Integer age , String name){ super(); this.age = age; this.name = name; } @Override public String toString(){ return age + name; } } public static void main(String args[]){ List<T> list = new ArrayList<T>(); list.add(new Test1().new T(5,"我是5")); list.add(new Test1().new T(6,"我是6")); list.add(new Test1().new T(4 ,"我是4")); Collections.sort(list,new Comparator<T>(){ @Override public int compare(T t1,T t2){ return t1.age.compareTo(t2.age);//如果上面采用int age,这里可以加Integer进行强制转换 } }); System.out.println(list); } }例2:
import java.lang.Comparable; import java.util.*; public class Test1 { class T{ Integer age; String name; T(Integer age , String name){ super(); this.age = age; this.name = name; } @Override public String toString(){ return age + name; } } public static void main(String args[]){ List<T> list = new ArrayList<T>(); list.add(new Test1().new T(5,"我是5")); list.add(new Test1().new T(6,"我是6")); list.add(new Test1().new T(4 ,"我是4")); Collections.sort(list,new Comparator<T>(){ @Override public int compare(T t1,T t2){//这段代码是不是很重写compareTo()方法一样呢 if(t1.age > t2.age) return 1; else if(t1.age == t2.age) return 0; else if(t1.age < t2.age) return -1; return 0; } }); System.out.println(list); } }
640

被折叠的 条评论
为什么被折叠?



