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"))当然你可以按其他的字段排。
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排序