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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.*;
class TreeSetTest2
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
       
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet();

                ts.add(new Student("lisi01",11));
                ts.add(new Student("lisi03",51));
                ts.add(new Student("lisi04",16));

                Iterator it = ts.iterator();

                while (it.hasNext())
                {
                        Student stu = (Student)it.next();
                        sop(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 int compareTo(Object obj)
        {
                if(!(obj instanceof Student))
                        throw new RuntimeException("错误");
                Student s = (Student)obj;

                if(this.name == s.name)
                        return 1;
                if(this.name == s.name)
                {
                        return this.name.compareTo(s.name);
                }
                return -1;
        }
        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age;
        }
}

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 呵呵 ,鼓励 。

查看全部评分

3 个回复

倒序浏览
import java.util.*;
class TreeSetTest
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet();

                ts.add(new Student("lisi01",11));
                ts.add(new Student("lisi03",51));
                ts.add(new Student("lisi04",16));

                Iterator it = ts.iterator();

                while (it.hasNext())
                {
                        Student stu = (Student)it.next();
                        sop(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 int compareTo(Object obj)
        {
                if(!(obj instanceof Student))
                        throw new RuntimeException("错误");
                Student s = (Student)obj;

                if(this.age >s.age) //比较年龄
                        return 1;
                if(this.age== s.age)
                {
                        return this.name.compareTo(s.name);
                }
                return -1;
        }
        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age;
        }
}

因为你没有指定需要比较的是年龄

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
你的compareto代码写错了,应该是这样:
public int compareTo(Object obj)
        {

                //return 0;
               
                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 this.name.compareTo(s.name);
                }
                return -1;
                /**/
        }//这个是毕老师写的那个代码,是先按年龄排序,年龄相等再按姓名排序,你如果想先按姓名排序,换一下就行

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
这样写就OK了:
import java.util.*;
class TreeSetTest
{
        public static void sop(Object obj)
        {
                System.out.println(obj);
        }
        
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet();

                ts.add(new Student("lisi01",11));
                ts.add(new Student("lisi03",51));
                ts.add(new Student("lisi04",16));

                Iterator it = ts.iterator();

                while (it.hasNext())
                {
                        Student stu = (Student)it.next();
                        sop(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 int compareTo(Object obj)
        {
                if(!(obj instanceof Student))
                        throw new RuntimeException("错误");
                Student s = (Student)obj;
                //比较年龄
                if(this.age >s.age)
                        return 1;
                if(this.age== s.age)
                {
                        return this.name.compareTo(s.name);
                }
                return -1;
        }

        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age;
        }
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

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