我在创建一个TreeSet实例时的疑问
import java.util.*;
public class TestTreeSet implements Comparable, Comparator{
private String contents = null;
final String[] digits = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
public TestTreeSet() {
}
public TestTreeSet(String s) throws Exception {
for(int i=0; i<digits.length; i++) {
if(digits[i].equalsIgnoreCase(s)) {
contents = s;
break;
}
}
if(contents == null) {
throw new Exception(s + "is not allowed in collection");
}
}
public int compare(Object o1, Object o2) {
int i1 = -1, i2 = -2;
String s1 = ((TestTreeSet) o1).getContents().toLowerCase();
String s2 = ((TestTreeSet) o2).getContents().toLowerCase();
for(int i=0; i<digits.length; i++) {
if(i1<0 && s1.equals(digits[i])) {
i1 = i;
if(i2 >= 0) break;
}
if(i2<0 && s2.equals(digits[i])) {
i2 = i;
if(i1 >= 0) break;
}
}
return i1 - i2;
}
public static void main(String[] args) {
TreeSet myTs = new TreeSet(new TestTreeSet());
try {
myTs.add(new TestTreeSet("FiVe"));
myTs.add(new TestTreeSet("ZerO"));
myTs.add(new TestTreeSet("Six"));
myTs.add(new TestTreeSet("Seven"));
myTs.add(new TestTreeSet("eiGHt"));
} catch (Exception e) {
System.err.println(" " + e.getMessage());
//e.printStackTrace();
}
Iterator it = myTs.iterator();
String s = null;
while(it.hasNext()) {
s = ((TestTreeSet)it.next()).getContents();
System.out.println(s);
}
这样写输出的是:ZerO
FiVe
Six
Seven
eiGHt
然后当在main方法中这样创建时:TreeSet myTs = new TreeSet();
输出是:
Six
FiVe
Seven
为什么么呀? 不理解 请高手帮忙解答 谢谢!!!