自己刚刚写的一个程式,感觉效率很低,求各位帮忙改一下。

2016-06-15 05:46:12
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

/*
* 将学生名和考试成绩录入到MAP中,并按照成绩显示前三名
*
* */


public class Test2 {
public static void main(String[] args)
{
TreeMap reporter =new TreeMap();

reporter.put("D9", 99);
reporter.put("D2", 92);
reporter.put("D8", 19);
reporter.put("D4", 39);
reporter.put("D5", 59);
reporter.put("D3", 79);
reporter.put("D1", 69);

Collection coll = reporter.values();
List l = new ArrayList(coll);
Collections.sort(l,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 i2.compareTo(i1);
}
return 0;
}});

LinkedHashMap lm = new LinkedHashMap();
Set set = reporter.entrySet();
for(int j=0;j<3;j++){
Integer i = (Integer) l.get(j);
Iterator it = set.iterator();
while(it.hasNext())
{
Map.Entry entry = (Entry) it.next();
if((Integer)entry.getValue()==i){
lm.put(entry.getKey(), entry.getValue());
}
}
}
System.out.println(lm);


}


}
...全文
195 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_18160847 2016-06-15
  • 打赏
  • 举报
回复
是否可以考虑将学生民和成绩封装在一起放入list集合,然后直接对成绩进行排序
解开者 2016-06-15
  • 打赏
  • 举报
回复
可以考虑使用Guava提供的集合框架,MultiMap可以返回任意实现的Map的K-V反转视图(即变成V-K)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧