关于创建TreeSet的疑问,请大家进来看看帮我解答

yuxingfirst 2010-03-25 12:54:33
我在创建一个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

为什么么呀? 不理解 请高手帮忙解答 谢谢!!!
...全文
59 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧