既然是从数据库取出来的数据,那么,在sql里排序不是更方便吗?select 姓名,绩点 from 表名 order by 绩点 desc
你放到HASHMAP里面 key作为序数 第一个就是0,后面增长,value放一个对象,这样你只要在搜索数据得时候作个GROUP BY 绩点,就没问题了
没有理解楼上的,哪里能用group by
得成绩降序(高分→低分)排列记录集合的sql语句 “select 学号,成绩 from 表名 order by 成绩 desc” 依次显示就是已经排好序的 列表了 ,如果想 低→高 去掉 最后那个 desc 就行了
取出来是单科,综合后放数组,最后一个sort
public class CompareClass implements Comparable{ private Vector list = null; private int order; public CompareClass() { } public int compareTo(Object o){ int result = 0; if(o instanceof CompareClass){ CompareClass cc = (CompareClass)o; if(this.order > cc.order){ result = 1; }else if(this.order < cc.order){ result = -1; }else if(this.order == cc.order){ result = 0; } } return result; } public static void main(String[] args){ Vector v = new Vector(); for(int i=10;i>0;i--){ CompareClass cc = new CompareClass(); cc.order = i; v.add(cc); } Collections.sort(v); Iterator it = v.iterator(); while(it.hasNext()){ System.out.println(((CompareClass)it.next()).order); } }
依次显示就是已经排好序的 列表了 ,如果想 低→高 去掉 最后那个 desc 就行了
private Vector list = null;
private int order;
public CompareClass() {
} public int compareTo(Object o){
int result = 0; if(o instanceof CompareClass){
CompareClass cc = (CompareClass)o;
if(this.order > cc.order){
result = 1;
}else if(this.order < cc.order){
result = -1;
}else if(this.order == cc.order){
result = 0;
}
}
return result;
} public static void main(String[] args){
Vector v = new Vector();
for(int i=10;i>0;i--){
CompareClass cc = new CompareClass();
cc.order = i;
v.add(cc);
}
Collections.sort(v);
Iterator it = v.iterator();
while(it.hasNext()){
System.out.println(((CompareClass)it.next()).order);
}
}
实现这个方法 compareTo
最后用Collections.sort(v);会将你的数据排序好,V里的数据就是按小到大排列的
Collections的sort的2个重载方法。
找些资料来看看吧