import java.util.*;
public class TreeSetDemo
{
public static void main(String [] args)
{
TreeSet ts=new TreeSet();
ts.add(new Student("zhangsan1",1));
/*ts.add(new Student("zhangsan2",3));
ts.add(new Student("zhangsan3",1));
ts.add(new Student("zhangsan4",5));
ts.add(new Student("zhangsan5",1));*/
Iterator i=ts.iterator();
while(i.hasNext())
{
Student s=(Student)i.next();
sop(s.getName()+":"+s.getAge());
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
class Student implements Comparable
{
private String name;
private int age;
Student(String name,int age)
{
this.name=name;
this.age=age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public int compareTo(Object obj)
{
if(!(obj instanceof Student))
throw new RuntimeException("传入的不是学生对象");
Student s=(Student)obj;
System.out.println(this.name+"调用compareTo方法,与"+s.name+"比较");
if(age>s.age)
return 1;
else if(age==s.age)
{
return s.name.compareTo(name);
}
return -1;
}
}
/**************************/
这个是仿照毕老师的TreeSet集合类中例子的代码写的。运行结果如下:
/*************************/
zhangsan1调用compareTo方法,与zhangsan1比较
zhangsan1:1
/*************************/
为什么往空的TreeSet集合ts中传一个Student对象zhangsan1,它会自动调用compareTo方法?
看运行结果是zhangsan1自己调用了compareTo方法,并且把自己作为参数传了进去;但是毕老师的视频里,放第一个对象的时候,并没有显示第一个对象调用了compareTo方法与自己作比较。求指教
|