list<map> 排序,根据总分数排序,高手来,加分
Map<String,String>map=newHashMap<String,String>();map.put("groupName",groupName);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,怎么排序,别讲原理,上代码的直接给分 展开
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,怎么排序,别讲原理,上代码的直接给分 展开
4个回答
展开全部
用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"))
当然你可以按其他的字段排。
展开全部
//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;
}
});
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
}
}
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);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
啥意思 不排序?还有你要求是啥规则排序吗?你这还让人 自己发现规则啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询