A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 路国强 中级黑马   /  2013-12-25 18:06  /  876 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.*;
  2. /*
  3. 需求:往TreeSet集合中存储自定义对象学生。
  4. 想按照学生的年龄进行排序。
  5. */
  6. class TreeSetDemo
  7. {
  8.         public static void main(String[] args)
  9.         {
  10.                 TreeSet ts = new TreeSet();
  11.                 ts.add(new Student("lisi02",22));
  12.                 ts.add(new Student("lisi0072",29));
  13.                 ts.add(new Student("lisi09",29));
  14.                 //ts.add(new Student("lisi01",40));

  15.                 Iterator it = ts.iterator();
  16.                 while(it.hasNext()){
  17.                         Student stu = (Student)it.next();
  18.                         System.out.println(stu.getName()+"..."+stu.getAge());
  19.                 }
  20.         }
  21. }

  22. class Student implements Comparable//该接口强制让学生具备比较性
  23. {
  24.         private String name;
  25.         private int age;
  26.         Student(String name,int age){
  27.                 this.name = name;
  28.                 this.age = age;
  29.         }
  30.         public String getName(){
  31.                 return name;
  32.         }
  33.         public int getAge(){
  34.                 return age;
  35.         }
  36.         public int compareTo(Object obj){
  37.                 if(!(obj instanceof Student))
  38.                         throw new RuntimeException("不是学生对象!");
  39.                 Student s = (Student)obj;

  40.                 System.out.println(this.name+"..compareto.."+s.name);
  41.                 if(this.age>s.age)
  42.                         return 1;
  43.                 if(this.age==s.age){
  44.                         return <font color="#ff0000">this.name.compareTo(s.name);</font>
  45.                 }
  46.                 return -1;
  47.         }
  48. }
复制代码
万恶的验证码,提问个问题累死我了。红色的地方是小弟不懂得地方。为什么要用this和s来调用。求解释、
[code]import java.util.*;
/*
需求:往TreeSet集合中存储自定义对象学生。
想按照学生的年龄进行排序。
*/
class TreeSetDemo
{

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

2 个回复

倒序浏览
FFF 金牌黑马 2013-12-25 19:26:25
沙发
看不到你说的红色的地方
回复 使用道具 举报
1,this的理解:this代表它所在函数所属对象的引用,换句话说,哪个对象在调用this所在函数,那么this就代表哪个对象的引用
2,this的使用是因为在函数内部要用到该函数的对象,那么就用this来代表这个对象
3,TreeSet具有排序共能,依据是存入对象的compaerTo方法,因此在向TreeSet集合中存入对象时,存入的对象将调用自己的compaerTo方法与集合中已有的对象进行比较,这时将集合中的对象作为参数传递给自己的compaerTo方法即compaerTo(被比较的对象),因为比较条件是对象的年龄来比较,这时在compaerTo方法内部就要用到函数本身所属的对象了,此时this.age与this.name就是代表这个将要存入集合并与集合中已有对象进行比较的对象。而s.age与s.name则代表与这个对象要进行比较的对象的年龄,也就是集合中已有的对象的年龄。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马