list<map> 排序,根据总分数排序,高手来,加分

Map<String,String> map = new HashMap<String,String>();
map.put("groupName", groupName);
map.put("branchName", branchName);
map.put("basicScore", String.valueOf(basicScore));
map.put("pulsScore", String.valueOf(pulsScore));
map.put("minusScore", String.valueOf(minusScore));
map.put("countScore", String.valueOf(countScore));
list.add(map);
这就是我的list中的map的结构,我现在要对这个list排序,怎么弄?
说明一下:我要根据countScore来排序,这个List中有16个这样的map,怎么排序,别讲原理,上代码的直接给分

用Collections排序,给你个例子,你的太多,不方便查看

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class $ {
    public static void main(String[] args) {
        List<Map<String, String>> list = new ArrayList<Map<String, String>>();

        list.add(getData(0));
        list.add(getData(3));
        list.add(getData(05));
        list.add(getData(6));
        list.add(getData(2));

        System.out.println("排序前" + list);

        Collections.sort(list, new Comparator<Map<String, String>>() {
            public int compare(Map<String, String> o1, Map<String, String> o2) {
                return o1.get("countScore").compareTo(o2.get("countScore"));
            }
        });

        System.out.println("排序后" + list);
    }

    private static Map<String, String> getData(int num) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("countScore", String.valueOf(num));
        return map;
    }
}

结果:

排序前[{countScore=0}, {countScore=3}, {countScore=5}, {countScore=6}, {countScore=2}]
排序后[{countScore=0}, {countScore=2}, {countScore=3}, {countScore=5}, {countScore=6}]

 如果是降序:改成这个

return o2.get("countScore").compareTo(o1.get("countScore"))

当然你可以按其他的字段排。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-25
//Comparator<?>() 在问号填你list装的类型
Collections.sort(list,new Comparator<Map<String, Integer>>() {
public int compare(Map<String, Integer> o1, Map<String, Integer> o2) {
// 在这个方法比较2个对象,自己定义比较方式
//返回值<=0 表示不对2个对象顺序做出改变
//返回值>0   则反之
if(o1.get("paixu")<o2.get("paixu")){
return 7;
}
return 0;
}
});

第2个回答  2013-09-25
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
int[] it = new int[list.size()];
for(int i = 0; i < list.size(); i++){
Map<String, String> map = list.get(i);
it[i] = Integer.valueOf(map.get("countScore")); // 转化对比数值
}
for (int i = 0; i < it.length -1; i++){ // 用冒泡排序
for(int j = 0 ;j < it.length - i - 1; j++){ // 对当前无序区间score[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)
if(it[j] < it[j + 1]){ // 用list的index替换it数组的值互换
Map<String, String> map = list.get(j);
list.set(j, list.get(j + 1));
list.set(j + 1, map);
}
}
}
第3个回答  2013-09-25
啥意思 不排序?还有你要求是啥规则排序吗?你这还让人 自己发现规则啊
相似回答