永发信息网

利用java把学生名和考试分数录入到Map中,并按分数显示成绩是前三的学生的名字。

答案:2  悬赏:80  手机版
解决时间 2021-03-16 18:53
  • 提问者网友:未信
  • 2021-03-16 05:26
利用java把学生名和考试分数录入到Map中,并按分数显示成绩是前三的学生的名字。
最佳答案
  • 五星知识达人网友:忘川信使
  • 2021-03-16 06:28
List list = new ArrayList();
for(int i=1;i<10;i++){
Map m = new HashMap();
m.put("name:","name"+i);
m.put("score",i);
list.add(m);
}
System.out.println("默认排序:"+list);
Collections.sort(list,new Comparator() {
public int compare(Object o1, Object o2) {
HashMap m1 = (HashMap) o1;
HashMap m2 = (HashMap) o2;
if((Integer)m1.get("score")>(Integer)m2.get("score")){
return -1;
}else if((Integer)m1.get("score")<(Integer)m2.get("score")){
return 1;
}else{
return 0;
}
}
});
System.out.println("排序后:"+list.get(0)+list.get(1)+list.get(2));

//输出结果:
默认排序:[{name:=name1, score=1}, {name:=name2, score=2}, {name:=name3, score=3}, {name:=name4, score=4}, {name:=name5, score=5}, {name:=name6, score=6}, {name:=name7, score=7}, {name:=name8, score=8}, {name:=name9, score=9}]
排序后:{name:=name9, score=9}{name:=name8, score=8}{name:=name7, score=7}

只用map实现的话好像不可能
treeMap 只能根据key排序 不能对value排序
全部回答
  • 1楼网友:白昼之月
  • 2021-03-16 06:35
@test     public void test(){         comparator com =new comparator() {             @override             public int compare(object o1, object o2) {                 if (o1 instanceof stduent && o2 instanceof stduent) {                     stduent e1=(stduent)o1;                     stduent e2=(stduent)o2;                     return e1.getresult().compareto(e2.getresult());                 }                 return 0;             }                     };         map map =new treemap(com);         map.put(new stduent(99, 001), "汪峰");         map.put(new stduent(69, 003), "汪峰3");         map.put(new stduent(79, 006), "汪峰4");         map.put(new stduent(89, 005), "汪峰5");         //通过entryset方法把map类型转化为set集合。                 set entry=map.entryset();         //把set集合转化为list集合         list list =new arraylist(entry);            collections.reverse(list);         system.out.println("前三名姓名为:");         for (int i = 0; i < 3; i++) {             system.out.println(list.get(i));         }     } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯