排序问题,在线等 List<Map<String,Integer>我现在要给这个List按照Map中的value排序怎么能实现 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 java.util 类 Collectionssort(List<T> list, Comparator<? super T> c) 你的List 和Map是什么关系?List中的值是Map中value的值吗? List <Map <String,Integer>>Map <String,Integer>中VALUE是Integer,一个Map中有很多Integer按楼主的意思,是先比较所有Map的第一个Value如果相同,在比较第二个? java.util 类库里面有这个类的, 《thinking in java》有详细的介绍 是的,我要的效果就是list中的map的顺序是按map中的value来排序的。 是的,我要的效果就是list中的map的顺序是按map中的value来排序的。 那就有问题了,Map也是一个容器.比如,List中放中map1,map2,map3三个Map,map1中又放着<"one1",1>,<"one2",2>;map2中放着<"two1",1>,<"two2",2>,<"two3",3>,<"two4",4>.map1和map2怎么比较大小? LZ 你的map里面貌似有很多value吧?到底用那个value来排序呢? map1、map2中只有一个元素,也就是这个样子map1<"one",1>,map2<"two",2>……依次类推。map中没有多个元素的。 那样子的话就排序就要做好多工作了,比较烦琐.你为什么不直接用一个Map来办你的事呢?因为你的数据都是一些<key,value>. 前辈有什么高招,我的Map是这样的Map tempMap= new HashMap();tempMap.put("A1", 1);tempMap.put("A2", 1);tempMap.put("A3", 2);tempMap.put("A4", 50);tempMap.put("A5", 4);tempMap.put("A6", 5);tempMap.put("A7", 965);tempMap.put("A8", 7);tempMap.put("A9", 8);tempMap.put("A10", 10);……怎么样能排序出来,因为我要在界面上按value来排序的。 界面上的现实就是这样的名称 次数key valuekey valuekey valuekey valuekey valuekey value……帮帮忙 前辈们有什么高招,我的Map是这样的 Map tempMap= new HashMap(); tempMap.put("A1", 1); tempMap.put("A2", 1); tempMap.put("A3", 2); tempMap.put("A4", 50); tempMap.put("A5", 4); tempMap.put("A6", 5); tempMap.put("A7", 965); tempMap.put("A8", 7); tempMap.put("A9", 8); tempMap.put("A10", 10); …… 怎么样能排序出来,因为我要在界面上按value来排序的。界面上的现实就是这样的 名称 次数 key value key value key value key value key value key value …… 帮帮忙,怎么处理我的map才能在界面上达到我要的效果啊 下面的类定义为内部类.class MyComparator implements Comparator{ compare(Map m1,Map,m2){ Integer val1,val2; ArrayList al=m1.values(); //把m1中所有的value取出来放到al中 val1=((Integer[])(al.toArray()))[0]; //把al转成数组,再取数组第一个元素的值. al=m2.values(); //同理. val2=((Integer[])(al.toArray()))[0]; return val1-val2; }}用下面的语句排序:Collection.sort(List list, new MyComparator()); 以上代码没有经过调试,只用来表示算法. 如果只用Map.Collections.sort(tempMap.values())就完事了 顶treemap是会自动排序的,你把list里的map放那个map里就可以了 package Test;import java.util.*;public class Test { public static void main(String[] args) { SortedMap<String, Integer> tempMap = new TreeMap<String, Integer>(); tempMap.put("A1", 1); tempMap.put("A2", 1); tempMap.put("A3", 2); tempMap.put("A4", 50); tempMap.put("A5", 4); tempMap.put("A6", 5); tempMap.put("A7", 965); tempMap.put("A8", 7); tempMap.put("A9", 8); tempMap.put("A10", 10); Map.Entry[] e = getSortedHashtableByValue(tempMap); for(int i=0;i<e.length;i++){ Map.Entry entry = e[i]; System.out.println(entry.getValue()); } } public static Map.Entry[] getSortedHashtableByValue(Map h) { Set set = h.entrySet(); Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set .size()]); Arrays.sort(entries, new Comparator() { public int compare(Object arg0, Object arg1) { Long key1 = Long.valueOf(((Map.Entry) arg0).getValue() .toString()); Long key2 = Long.valueOf(((Map.Entry) arg1).getValue() .toString()); return key1.compareTo(key2); } }); return entries; }} 问一个基础问题 我的java老是提示这个错误,怎么回事 上海先锋商泰面试题 applet调用servlet的问题 关于传字符不正确的问题! 测试最大分 什么情况下只能用Runable不能用Thread? 请问哪里可以下载上传文件的java源代码?? Applet的一个问题 请教在英文JBuilder5中的中文使用问题 内部类的实现方式 用java实现画直线的功能
类 Collectionssort(List<T> list, Comparator<? super T> c)
Map <String,Integer>中VALUE是Integer,
一个Map中有很多Integer
按楼主的意思,是先比较所有Map的第一个Value
如果相同,在比较第二个?
比如,List中放中map1,map2,map3三个Map,map1中又放着<"one1",1>,<"one2",2>;map2中放着<"two1",1>,<"two2",2>,<"two3",3>,<"two4",4>.map1和map2怎么比较大小?
Map tempMap= new HashMap();
tempMap.put("A1", 1);
tempMap.put("A2", 1);
tempMap.put("A3", 2);
tempMap.put("A4", 50);
tempMap.put("A5", 4);
tempMap.put("A6", 5);
tempMap.put("A7", 965);
tempMap.put("A8", 7);
tempMap.put("A9", 8);
tempMap.put("A10", 10);
……
怎么样能排序出来,因为我要在界面上按value来排序的。
名称 次数
key value
key value
key value
key value
key value
key value
……
帮帮忙
Map tempMap= new HashMap();
tempMap.put("A1", 1);
tempMap.put("A2", 1);
tempMap.put("A3", 2);
tempMap.put("A4", 50);
tempMap.put("A5", 4);
tempMap.put("A6", 5);
tempMap.put("A7", 965);
tempMap.put("A8", 7);
tempMap.put("A9", 8);
tempMap.put("A10", 10);
……
怎么样能排序出来,因为我要在界面上按value来排序的。
界面上的现实就是这样的
名称 次数
key value
key value
key value
key value
key value
key value
……
帮帮忙,怎么处理我的map才能在界面上达到我要的效果啊
class MyComparator implements Comparator{
compare(Map m1,Map,m2){
Integer val1,val2;
ArrayList al=m1.values(); //把m1中所有的value取出来放到al中
val1=((Integer[])(al.toArray()))[0]; //把al转成数组,再取数组第一个元素的值.
al=m2.values(); //同理.
val2=((Integer[])(al.toArray()))[0];
return val1-val2;
}
}用下面的语句排序:
Collection.sort(List list, new MyComparator()); 以上代码没有经过调试,只用来表示算法.
package Test;import java.util.*;public class Test { public static void main(String[] args) {
SortedMap<String, Integer> tempMap = new TreeMap<String, Integer>();
tempMap.put("A1", 1);
tempMap.put("A2", 1);
tempMap.put("A3", 2);
tempMap.put("A4", 50);
tempMap.put("A5", 4);
tempMap.put("A6", 5);
tempMap.put("A7", 965);
tempMap.put("A8", 7);
tempMap.put("A9", 8);
tempMap.put("A10", 10); Map.Entry[] e = getSortedHashtableByValue(tempMap);
for(int i=0;i<e.length;i++){
Map.Entry entry = e[i];
System.out.println(entry.getValue());
}
} public static Map.Entry[] getSortedHashtableByValue(Map h) {
Set set = h.entrySet();
Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set
.size()]);
Arrays.sort(entries, new Comparator() {
public int compare(Object arg0, Object arg1) {
Long key1 = Long.valueOf(((Map.Entry) arg0).getValue()
.toString());
Long key2 = Long.valueOf(((Map.Entry) arg1).getValue()
.toString());
return key1.compareTo(key2);
}
}); return entries;
}
}