jjzzggkk
2016-04-27 15:19
采纳率: 80%
浏览 1.5k
已采纳

求各位大神帮解决一道题目

图片说明

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • 温柔狠角色 2016-04-28 02:15
    已采纳

    package com.package1;

    import java.util.*;

    public class StuScore {

    public static void main(String[] args) {
    
        TreeSet<Student> ts=new TreeSet<Student>(new Com());
        //添加元素进去
        for(int i=20070301,j=1;i<=20070330;i++,j++)
        {
            ts.add(new Student(i,"同学"+j,"男",(int) (40*Math.random()+60)));
        }
    
        //迭代循环取出
        Iterator<Student> it=ts.iterator();
        while(it.hasNext())
        {
            Student o1=it.next();
            System.out.println("学号:"+o1.num+"  "+"姓名:"+o1.name+"  "+"性别:"+o1.sex+"  "+"成绩:"+o1.grade);
    
        }
    
    }
    

    }
    //学生类
    class Student
    {
    int num;
    int grade;
    String name;
    String sex;

    public Student(int num, String name, String sex, int grade)
    {
        this.num=num;
        this.name=name;
        this.sex=sex;
        this.grade=grade;
    }
    

    }
    class Com implements Comparator
    {

    @Override
    public int compare(Object o1, Object o2) {
    
        Student s1=(Student) o1;
        Student s2=(Student) o2;
        if(s1.grade>s2.grade)
            return 1;
        if(s1.grade<s2.grade)
            return -1;
        if(s1.grade==s2.grade)
        {
            return new Integer(s1.num).compareTo(new Integer(s2.num));
        }
        return 0;
    }
    

    }

    打印结果:
    学号:20070307 姓名:同学7 性别:男 成绩:62
    学号:20070314 姓名:同学14 性别:男 成绩:68
    学号:20070324 姓名:同学24 性别:男 成绩:68
    学号:20070305 姓名:同学5 性别:男 成绩:70
    学号:20070303 姓名:同学3 性别:男 成绩:71
    学号:20070319 姓名:同学19 性别:男 成绩:71
    学号:20070323 姓名:同学23 性别:男 成绩:74
    学号:20070328 姓名:同学28 性别:男 成绩:75
    学号:20070310 姓名:同学10 性别:男 成绩:76
    学号:20070325 姓名:同学25 性别:男 成绩:77
    学号:20070329 姓名:同学29 性别:男 成绩:77
    学号:20070308 姓名:同学8 性别:男 成绩:78
    学号:20070321 姓名:同学21 性别:男 成绩:78
    学号:20070322 姓名:同学22 性别:男 成绩:79
    学号:20070326 姓名:同学26 性别:男 成绩:80
    学号:20070318 姓名:同学18 性别:男 成绩:83
    学号:20070320 姓名:同学20 性别:男 成绩:83
    学号:20070316 姓名:同学16 性别:男 成绩:85
    学号:20070311 姓名:同学11 性别:男 成绩:86
    学号:20070330 姓名:同学30 性别:男 成绩:86
    学号:20070312 姓名:同学12 性别:男 成绩:87
    学号:20070313 姓名:同学13 性别:男 成绩:87
    学号:20070309 姓名:同学9 性别:男 成绩:88
    学号:20070327 姓名:同学27 性别:男 成绩:89
    学号:20070315 姓名:同学15 性别:男 成绩:93
    学号:20070317 姓名:同学17 性别:男 成绩:93
    学号:20070301 姓名:同学1 性别:男 成绩:94
    学号:20070306 姓名:同学6 性别:男 成绩:96
    学号:20070304 姓名:同学4 性别:男 成绩:97
    学号:20070302 姓名:同学2 性别:男 成绩:98

    已采纳该答案
    打赏 评论
  • threenewbee 2016-04-27 15:32
    打赏 评论
  • 一只程序渣 2016-04-28 02:21

    哈哈,特别喜欢看这种考基础的题。这道题主要考点有两个:
    一、Comparable接口
    二、集合里的排序方法

    首先按照题目来看你肯定需要一个学生类,来放你打印的这些属性(学号啊,姓名啊,巴拉巴拉)。那么考点一就来了,当一个学生A和一个学生B来比较排序
    你是按照什么标准来排序呢。你肯定不是年龄大的在前面对吧(神经病啊,题干清清楚楚说的按分数来排序),so....Comparable接口的实现是势在必行
    了。
    接着就是考点二了,java.util.Collections这个类提供了一些关于集合类常用的静态方法包括:对List容器的排序sort(),逆向排序reverse() ,and so on...
    Map的排序话我觉得楼上caozhy这位兄台的连接已经讲的很详细。

    finally{
    刚巴得!小伙子
    }

    打赏 评论
  • leiyuxuandeai 2016-04-28 02:53

    图片说明

    打赏 评论
  • leiyuxuandeai 2016-04-28 02:54

    图片说明

    打赏 评论
  • 温柔狠角色 2016-07-14 02:24

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Iterator;
    import java.util.TreeMap;

    public class Test2{

    public static void main(String[] args){
    
        ArrayList<Student>al=new ArrayList<Student>();
        for(int i=20070301,j=10;i<=20070330;i++,j++)
        {
            al.add(new Student(i,(int) (40*Math.random()+60), "同学"+j));
        }
    

    // Iteratorit=al.iterator();
    //

    // while(it.hasNext()){
    //

    // Student s1=it.next();
    // System.out.println(s1);
    // }
    //ArrayList排序借助Collections中的sort()方法实现。
    Collections.sort(al, new Sortbygrade());
    for(Student sd:al)
    System.out.println(sd);

    }
    

    }

    //学生类
    class Student{
    int num,grade;
    String name;

    //构造函数
    public Student(int num,int grade,String name){
    
        this.num=num;
        this.name=name;
        this.grade=grade;
    }
    
    public String toString(){
    
        return "学号:"+this.num+"\t"+"姓名:"+this.name+"    "+"成绩:"+this.grade;
    }
    

    }

    class Sortbygrade implements Comparator{

    @Override
    public int compare(Object o1, Object o2) {
    
        Student s1=(Student) o1;
        Student s2=(Student) o2;
        if(s1.grade>s2.grade)
            return 1;
        if(s1.grade<s2.grade)
            return -1;
    

    // if(s1.grade==s2.grade)

        return 0;
    }
    

    }

    打赏 评论

相关推荐 更多相似问题