黑马程序员技术交流社区
标题:
小弟有一个TreeSet中一个问题
[打印本页]
作者:
路国强
时间:
2013-12-25 18:06
标题:
小弟有一个TreeSet中一个问题
import java.util.*;
/*
需求:往TreeSet集合中存储自定义对象学生。
想按照学生的年龄进行排序。
*/
class TreeSetDemo
{
public static void main(String[] args)
{
TreeSet ts = new TreeSet();
ts.add(new Student("lisi02",22));
ts.add(new Student("lisi0072",29));
ts.add(new Student("lisi09",29));
//ts.add(new Student("lisi01",40));
Iterator it = ts.iterator();
while(it.hasNext()){
Student stu = (Student)it.next();
System.out.println(stu.getName()+"..."+stu.getAge());
}
}
}
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(this.age>s.age)
return 1;
if(this.age==s.age){
return <font color="#ff0000">this.name.compareTo(s.name);</font>
}
return -1;
}
}
复制代码
万恶的验证码,提问个问题累死我了。红色的地方是小弟不懂得地方。为什么要用this和s来调用。求解释、
[code]import java.util.*;
/*
需求:往TreeSet集合中存储自定义对象学生。
想按照学生的年龄进行排序。
*/
class TreeSetDemo
{
作者:
FFF
时间:
2013-12-25 19:26
看不到你说的红色的地方
作者:
天天学习
时间:
2013-12-25 21:50
1,this的理解:this代表它所在函数所属对象的引用,换句话说,哪个对象在调用this所在函数,那么this就代表哪个对象的引用
2,this的使用是因为在函数内部要用到该函数的对象,那么就用this来代表这个对象
3,TreeSet具有排序共能,依据是存入对象的compaerTo方法,因此在向TreeSet集合中存入对象时,存入的对象将调用自己的compaerTo方法与集合中已有的对象进行比较,这时将集合中的对象作为参数传递给自己的compaerTo方法即compaerTo(被比较的对象),因为比较条件是对象的年龄来比较,这时在compaerTo方法内部就要用到函数本身所属的对象了,此时this.age与this.name就是代表这个将要存入集合并与集合中已有对象进行比较的对象。而s.age与s.name则代表与这个对象要进行比较的对象的年龄,也就是集合中已有的对象的年龄。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2