Comparabe和Comparator的区别?
以下两个类中分别实现了Comparable 和Comparator请问:
Comparable 中的 compareto 和Comparator中的compare两个方法有区别吗??
import com.bruceeckel.util.*;
import java.util.*;
public class CompType implements Comparable {
int i;
int j;
public CompType(int n1, int n2) {
i = n1;
j = n2;
}
public String toString() {
return "[i = " + i + ", j = " + j + "]";
}
public int compareTo(Object rv) {
int rvi = ((CompType)rv).i;
return (i < rvi ? -1 : (i == rvi ? 0 : 1));
}
private static Random r = new Random();
private static int randInt() {
return Math.abs(r.nextInt()) % 100;
}
public static Generator generator() {
return new Generator() {
public Object next() {
return new CompType(randInt(),randInt());
}
};
}
public static void main(String[] args) {
CompType[] a = new CompType[10];
Arrays2.fill(a, generator());
Arrays2.print("before sorting, a = ", a);
System.out.println("\n");
Arrays.sort(a);
Arrays2.print("after sorting, a = ", a);
}
} ///:~
//////////////////////////////////////////////////////
import com.bruceeckel.util.*;
import java.util.*;
class CompTypeComparator implements Comparator {
public int compare(Object o1, Object o2) { //o1为第一个元素,o2为o1后面那个元素
int j1 = ((CompType)o1).j;
int j2 = ((CompType)o2).j;
return (j1 < j2 ? -1 : (j1 == j2 ? 0 : 1));
}
}
public class ComparatorTest {
public static void main(String[] args) {
CompType[] a = new CompType[10];
Arrays2.fill(a, CompType.generator());
Arrays2.print("before sorting, a = ", a);
System.out.println("\n");
Arrays.sort(a, new CompTypeComparator());
Arrays2.print("after sorting, a = ", a);
}
} ///:~
问题点数:0、回复次数:3Top
1 楼toto2004(易德)回复于 2005-04-04 12:08:12 得分 0
自己来顶吧Top
2 楼toto2004(易德)回复于 2005-04-05 21:17:20 得分 0
怎么就一个人都不回答我啊:(
继续顶Top
3 楼toto2004(易德)回复于 2005-04-13 11:58:03 得分 0
顶Top




