利用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排序
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));
}
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯