把学生名与考试分数录入到集合中,并按分数显示前三名成绩学员的名字

法一:使用TreeSet

其中,在StudentTest类中实现了Comparable接口,重写了compareTo方法

 public static void main(String[] args) {
        TreeSet set = new TreeSet();
        Scanner scan=new Scanner(System.in);
        for (int i=0;i<4;i++){
            String name=scan.next();
            int score=scan.nextInt();
            set.add(new StudentTest(name,score));
        }
        System.out.println(set);
        int num=1;
        for(Object obj:set){
            if(obj instanceof StudentTest){
                StudentTest s=(StudentTest)obj;
                System.out.println(s.name);
                num+=1;
                if(num>3){
                    break;
                }
            }else{
                throw new RuntimeException("输入类型不匹配");
            }
        }
    }

法二:使用TreeMap

在TreeMap构造器中匿名Comparator对象进行从大到小排序(默认都是从小到大的)

public static void main(String[] args) {
        //自然排序是从小到大的,需要定制排序
        TreeMap map=new TreeMap(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                if(o1 instanceof Integer && o2 instanceof Integer){
                    Integer i1=(Integer)o1;
                    Integer i2=(Integer)o2;
                    return -Integer.compare(i1,i2);
                }else{
                    throw new RuntimeException("输入类型不匹配");
                }
            }
        });
        Scanner scan=new Scanner(System.in);
        for(int i=0;i<4;i++){
            String name=scan.next();
            int score=scan.nextInt();
            map.put(score,name);
        }
        Set set=map.keySet();
        int i=0;
        for(Object score:set){
            System.out.println(map.get(score));
            i++;
            if(i>=3){
                break;
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值