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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"))

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

参考技术A //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;

);

参考技术B 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);


参考技术C 啥意思 不排序?还有你要求是啥规则排序吗?你这还让人 自己发现规则啊

List<Map<String, String>> 形式 list根据 每个map中的key排序

		List<Map<String, String>> listMap = new ArrayList<>();
        Map<String, String> map1 = new HashMap<>();
        map1.put("id","01");
        map1.put("name","111");
        listMap.add(map1);

        Map<String, String> map2 = new HashMap<>();
        map2.put("id","02");
        map2.put("name","222");
        listMap.add(map2);

        Map<String, String> map5 = new HashMap<>();
        map5.put("id","05");
        map5.put("name","555");
        listMap.add(map5);

        Map<String, String> map4 = new HashMap<>();
        map4.put("id","04");
        map4.put("name","444");
        listMap.add(map4);

        Map<String, String> map3 = new HashMap<>();
        map3.put("id","03");
        map3.put("name","333");
        listMap.add(map3);

        Map<String, String> map7 = new HashMap<>();
        map7.put("id","07");
        map7.put("name","777");
        listMap.add(map7);

        System.out.println(listMap); 
        // [name=111, id=01, name=222, id=02, name=555, id=05, name=444, id=04, name=333, id=03, name=777, id=07]
        
		// 排序
        List<Map<String, String>> list = listMap.stream().sorted((Comparator.comparingInt(o -> Integer.parseInt(o.get("id"))))).collect(Collectors.toList());

        System.out.println(list);
        //[name=111, id=01, name=222, id=02, name=333, id=03, name=444, id=04, name=555, id=05, name=777, id=07]

以上是关于list<map> 排序,根据总分数排序,高手来,加分的主要内容,如果未能解决你的问题,请参考以下文章

List<Map<String, String>> 形式 list根据 每个map中的key排序

List<Map<String, String>> 形式 list根据 每个map中的key排序

对list中的多个map按某个属性的值排序,null值放到最后

Java中对listmap根据map某个key值进行排序

java map 根据 map的value值进行排序

算法-快速排序