import java.util.TreeSet;
class Demo2001
{
public static void main(String [] args)
{
TreeSet<Demo> demo =  new TreeSet<Demo>(); demo.add(new Demo("sss"));
demo.add(new Demo("ddd"));
demo.add(new Demo("sss"));
demo.add(new Demo("eee"));
demo.add(new Demo("aaa")); System.out.println(demo.size());
System.out.println(demo); System.out.println("==================="); TreeSet<String> str =  new TreeSet<String>();
str.add("fdf");
str.add("adf");
str.add("idf");
str.add("mdf");
str.add("idf"); System.out.println(str.size());
System.out.println(str);
}
}class Demo implements Comparable
{
String name;
public Demo(String name)
{
this.name=name;
}
public String toString() 
{
return name;
}
public int compareTo(Object obj)
{
if(this.name.compareTo(((Demo)obj).name)<0)
{
return -1;
}
if(this.name.compareTo(((Demo)obj).name)>0)
{
return 1;
}
return 1;
}
}

解决方案 »

  1.   

    public int compareTo(Object obj)
    {
    if(this.name.compareTo(((Demo)obj).name)<0)
    {
    return -1;
    }
    if(this.name.compareTo(((Demo)obj).name)>0)
    {
    return 1;
    }
    return 1; // 这里应该是return 0
    }
    }
      

  2.   

    Demo比较这样就可以了吧!
    public int compareTo(Object obj)
    {
    return this.name.compareTo(((Demo)obj).name);
    }
      

  3.   

    代码写的很一般,lz写代码的思路不严谨,比如说:compare中传入的对象不是你要的类型怎么办。注意一点,RuntimeException的抛出的可能多半就是代码有错。
      

  4.   

    public int compareTo(Object obj)
    {
    if(this.name.compareTo(((Demo)obj).name)<0)
    {
    return -1;
    }
    if(this.name.compareTo(((Demo)obj).name)>0)
    {
    return 1;
    }
    return 1;
    }this.name.compareTo(((Demo)obj).name)==0 这个情况为啥不做判断的?
    如果和>0是一个结果,那还不如这样写
    public int compareTo(Object obj)
    {
       if(this.name.compareTo(((Demo)obj).name)<0){
          return -1;
       }else{
          return 1;
       }
    }