id name score1 score2 score3 总分 排名
11020449 a 10 20 30 60 1
11020450 b 5 15 8 28 2
11020874 c 3 4 13 20 3 如上面一个列表,我使用循环方式来显示出来的,score1、score2、score3三个分数的总和即是总分。现在的问题是由于该列表记录是循环显示出来的,所以后面的排名是根据总分大小动态调整的。
请问有什么算法可以实现动态的排名。
比如我新增了一条记录d后则列表动态显示如下:
id name score1 score2 score3 总分 排名
11020449 d 25 20 30 75 1
11020449 a 10 20 30 60 2
11020450 b 5 15 8 28 3
11020874 c 3 4 13 20 4
11020449 a 10 20 30 60 1
11020450 b 5 15 8 28 2
11020874 c 3 4 13 20 3 如上面一个列表,我使用循环方式来显示出来的,score1、score2、score3三个分数的总和即是总分。现在的问题是由于该列表记录是循环显示出来的,所以后面的排名是根据总分大小动态调整的。
请问有什么算法可以实现动态的排名。
比如我新增了一条记录d后则列表动态显示如下:
id name score1 score2 score3 总分 排名
11020449 d 25 20 30 75 1
11020449 a 10 20 30 60 2
11020450 b 5 15 8 28 3
11020874 c 3 4 13 20 4
如果是文件,那你就自己累吧...
可以自己定义记录类,并自定义记录类的排序方式,然后调用集合框架提供的排序方法进行排序参考类和方法:
Collections.sort()
List
Comparator
Comparable
TreeSet(Comparator<? super E> c)
我只能在当前表中循环显示id、name的值,然后根据id来计算出score1,score2,score3,这样总分就可以通过(score1 +score2 +score3 ) 来计算。
但是由于总分是动态计算出来的,所以排名就会出现变动,不知道我的描述是否清楚。
Collections.sort()的方式确实是一个不错的思路,不知道是否有朋友能够给个详细的写法参考一下。多谢了
常常遇到数组排序的问题.比如我有一个Person类,它的实例对象存储在ArrayList数组中,现在要把ArrayList数组中的Person对象按照年龄排序.
其实这种情况经常遇到.
下面给出源代码:1:Person.java文件:-------------------------------
public class Person{
String name;
int age;
public Person(String name,int age){
this.name = name;
this.age = age;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}}
2:Mycomparator.java-------------------------------
//实现Comparator接口,也就是定义排序规则,你几乎可以定义任何规则
package com.infoearth;
import java.util.*;
public class Mycomparator implements Comparator{ public int compare(Object o1,Object o2) {
Person p1=(Person)o1;
Person p2=(Person)o2;
if(p1.age<p2.age)
return 1;
else
return 0;
}}3:ListSort.java------------------------------------package com.infoearth;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class ListSort {
public static void main(String[] args){
ArrayList list = new ArrayList();
list.add(new Person("lcl",28));
list.add(new Person("fx",23));
list.add(new Person("wqx",29));
Comparator comp = new Mycomparator();
Collections.sort(list,comp);
for(int i = 0;i<list.size();i++){
Person p = (Person)list.get(i);
System.out.println(p.getName());
}
}}
然后你从数据库中取的时候一边取一边填入对象中,并最后算出总分
把所有的UserInfo对象放入一个List中为UserInfo编写一个根据total属性排序的Compartor类
或者让UserInfo实现Comparable接口,实现根据total属性排序然后是用Collections.sort()方法对存放着所有UserInfo对象的List进行排序就可以了