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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 颜宗茂 于 2011-12-25 15:33 编辑

import java.util.*;
class TreeSetTest
{
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet();

                ts.add(new Student("lisi01",11));
                ts.add(new Student("lisi01",13));
                ts.add(new Student("lisi03",24));
                ts.add(new Student("lisi04",27));
                ts.add(new Student("lisi05",11));
       
                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 int compareTo(Object obj)
        {
                if(!(obj instanceof Student))
                        throw new RuntimeException("不是学生类");
                Student s = (Student)obj;
                if(this.age>s.age)
                        return 1;
                if(s.age==this.age)
                {
                        return this.name.compareTo(s.name);       
                }
                return -1;

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



以上程序是在定义的学生类中含有两个成员变量,再创建5个对象按年龄进行排序。
如果在学生类当中,再多加定义两个成员变量性别和考试成绩。也是创建5个对象,按成绩排序。应该如何编写这个程序??

4 个回复

倒序浏览
本帖最后由 李振元 于 2011-12-13 16:22 编辑

我在记事本里编写了一下,希望对楼主有所帮助:

import java.util.*;
class TreeSetTest
{
        public static void main(String[] args)
        {
                TreeSet ts = new TreeSet();

                ts.add(new Student("lisi01",11,"男",99));
                ts.add(new Student("lisi01",13,"女",94));
                ts.add(new Student("lisi03",24,"男",95));
                ts.add(new Student("lisi04",27,"女",98));
                ts.add(new Student("lisi05",11,"男",97));
      
                Iterator it =ts.iterator();
                while(it.hasNext())
                {
                        Student stu = (Student)it.next();
                       System.out.println(stu.getName()+"..."+stu.getAge()
                          +"..."+stu.getSex()+"..."+"..."+stu.getGrade());
                }
        }
}

class Student implements Comparable
{
        private String name;
        private int age;
        private String sex;
        private int grade;
        Student(String name,int age,String sex,int grade)
        {
                this.name = name;
                this.age = age;
                this.sex = sex;
                this.grade = grade;
                        }
        public int compareTo(Object obj)
        {
                if(!(obj instanceof Student))
                        throw new RuntimeException("不是学生类");
                Student s = (Student)obj;
                if(this.grade>s.grade)
                        return 1;
                if(s.grade==this.grade)
                {
                        return this.name.compareTo(s.name);      
                }
                return -1;

               
        }
        
        //都只提供get()方法,楼主可以自己增加set()方法
        public String getName()
        {
                return name;
        }
        public int getAge()
        {
                return age;
        }
         public String getSex()
        {
                return sex;
        }
         public int getGrade()
        {
                return grade;
        }
      
}

评分

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

查看全部评分

回复 使用道具 举报
compare 方法 里  对比 你要排序的属性就行了
回复 使用道具 举报
明白了,谢谢
回复 使用道具 举报
LZ改结贴了,
结贴方法:
http://bbs.itheima.com/thread-4863-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马