import java.util.*;class MyType implements Comparable {
private int i;
public MyType(int n) { i = n; }
public boolean equals(Object o) {
return
(o instanceof MyType)
&& (i == ((MyType)o).i);
}
public int hashCode() { return i; }
public String toString() { return i + " "; }
public int compareTo(Object o) {
int i2 = ((MyType)o).i;
return (i2 < i ? -1 : (i2 == i ? 0 : 1));
}
}public class Set2 {
public static Set fill(Set a, int size) {
for(int i = 0; i < size; i++)
a.add(new MyType(i));
return a;
}
public static void test(Set a) {
fill(a, 10);
fill(a, 10); // Try to add duplicates
fill(a, 10);
a.addAll(fill(new TreeSet(), 10));
System.out.println(a);
}
public static void main(String[] args) {
test(new HashSet());
test(new TreeSet());
}
}接口里面的compareTo方法,根本就没有使用啊,这个接口是怎么使用的?
public static Set fill(Set a, int size) {
for(int i = 0; i < size; i++)
a.add(new MyType(i));
return a;
}a.add(new MyType(i));中, 因为MyType实现了comparable接口,否则会有错的, 你能想到的就是:a.add的时候,肯定有用到MyType的compareTo方法.同理a.addAll(fill(new TreeSet(), 10)); 也是一样.Think in java中说:把不变的东西跟变的东西分开. 你理解了,很多地方就明白了.