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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 337091921 中级黑马   /  2013-4-28 21:16  /  2000 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 337091921 于 2013-5-11 21:48 编辑

写一个集合,集合存放的是整形的数据。写一个帮助类,帮组类中有两个static方法,一个方法为从大到小的顺序排序,一个方法为从小到大的顺序排序。实现上述的代码.

定义一个学生类, 需要有姓名, 年龄, 考试成绩三个成员属性,创建5个对象, 属性可为任意值. 编程对这5个对象按成绩排序,并将结果输出。(提示,用TreeSet和Comparator实现).

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 殇_心。 于 2013-4-28 21:52 编辑
  1. //测试代码如下:没时间写具体了。。 大概就这样了。
  2. import java.util.*;

  3. class Student implements Comparable
  4. {
  5.         private String name; //名字
  6.         private int age;//年龄
  7.         private int cj;//成绩
  8.         Student(String name,int age, int cj) //构造函数
  9.         {
  10.                 this.name = name;
  11.                 this.age = age;
  12.                 this.cj = cj;
  13.         }
  14.         public String getName()
  15.         {
  16.                 return name;
  17.         }
  18.         public int getAge()
  19.         {
  20.                 return age;
  21.         }
  22.         public int getCj()
  23.         {
  24.                 return cj;
  25.         }
  26.         public int compareTo(Object obj)//复写Comparable接口的compareTo方法
  27.         {
  28.                 if( !( obj instanceof Student))
  29.                         throw new RuntimeException("不是Student对象");
  30.                 Student p = (Student)obj;
  31.                 if( this.age > p.age ) return 1;
  32.                 else if( this.age == p.age )
  33.                 {
  34.                         return this.name.compareTo(p.name);
  35.                 }
  36.                 return -1;
  37.         }
  38.         
  39. }

  40. class comp1 implements Comparator//构造比较器 升序
  41. {
  42.         public int compare(Object o1,Object o2) //重写compare方法
  43.         {
  44.                 Student p1 = (Student)o1;
  45.                 Student p2 = (Student)o2;
  46.             int num = new Integer(p1.getCj()).compareTo(new Integer(p2.getCj()));  //比较成绩
  47.             if( num == 0 )
  48.             {
  49.                     return p1.getName().compareTo(p2.getName());  //次要关键字。 如果成绩相等,按姓名自然顺序
  50.             }
  51.             return num;
  52.         }
  53. }
  54. class comp2 implements Comparator//构造比较器   降序
  55. {
  56.         public int compare(Object o1,Object o2)
  57.         {
  58.                 Student p1 = (Student)o1;
  59.                 Student p2 = (Student)o2;
  60.             int num = new Integer(p2.getCj()).compareTo(new Integer(p1.getCj()));
  61.             if( num == 0 )
  62.             {
  63.                     return p1.getName().compareTo(p2.getName());
  64.             }
  65.             return num;
  66.         }
  67. }
  68. class Test
  69. {
  70.         public static void main(String[] args)
  71.         {
  72.                 //TreeSet ts = new TreeSet(new comp1());//按成绩升序
  73.                 TreeSet ts = new TreeSet(new comp2());//按成绩降序
  74.                 ts.add(new Student("a1",20,50));//添加学生
  75.                 ts.add(new Student("a2",23,70));
  76.                 ts.add(new Student("a3",19,80));
  77.                 ts.add(new Student("a3",20,90));
  78.                 Iterator it = ts.iterator(); //迭代器打印。
  79.                 while( it.hasNext() )
  80.                 {
  81.                         Student p = (Student)it.next();
  82.                         sop("姓名:"+p.getName()+"....年龄:"+p.getAge()+"...成绩:"+p.getCj());
  83.                 }
  84.         }
  85.         public static void sop(Object obj) //打印函数
  86.         {
  87.                 System.out.println(obj);
  88.         }
  89. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
import java.util.*;

//学生类
public class Student implements Comparable{
        public String name;    //姓名
        public int age;      //年龄
        public int score;   //考试成绩
        //构造函数,供类进行一些初始化信息
        public Student(String name,int age,int score){
                this.name=name;
                this.age=age;
                this.score=score;
        }
        @Override
        //实现Comparable比较器的方法,按照自己的需求进行排序
        public int compareTo(Object obj) {
                // TODO Auto-generated method stub
                if(!(obj instanceof Student) ){
                        throw new RuntimeException("不是学生类!");
                }
                Student s=(Student)obj;
                int num=new Integer(score).compareTo(s.score);
                if(num==0){
                        num=name.compareTo(s.name);
                }
                return num;
        }
}



import java.util.TreeSet;


public class Test1 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                TreeSet<Student> tr=new TreeSet<Student>();
                tr.add(new Student("张三",20,85));
                tr.add(new Student("王伟",21,60));
                tr.add(new Student("李莉莉",19,90));
                tr.add(new Student("王冰",22,70));
                tr.add(new Student("张川",18,80));
                //增强for循环读取信息
                for (Student s : tr) {
                        System.out.println("姓名:"+s.name+" 年龄:"+s.age+" 分数"+s.score);
                }
        }

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