List<Map<String,Integer>我现在要给这个List按照Map中的value排序怎么能实现

解决方案 »

  1.   

    java.util 
    类 Collectionssort(List<T> list, Comparator<? super T> c) 
      

  2.   

    你的List 和Map是什么关系?List中的值是Map中value的值吗?
      

  3.   

    List <Map <String,Integer>>
    Map <String,Integer>中VALUE是Integer,
    一个Map中有很多Integer
    按楼主的意思,是先比较所有Map的第一个Value
    如果相同,在比较第二个?
      

  4.   

    java.util  类库里面有这个类的, 《thinking in java》有详细的介绍  
      

  5.   

    是的,我要的效果就是list中的map的顺序是按map中的value来排序的。
      

  6.   

    是的,我要的效果就是list中的map的顺序是按map中的value来排序的。
      

  7.   

    那就有问题了,Map也是一个容器.
    比如,List中放中map1,map2,map3三个Map,map1中又放着<"one1",1>,<"one2",2>;map2中放着<"two1",1>,<"two2",2>,<"two3",3>,<"two4",4>.map1和map2怎么比较大小?
      

  8.   

    LZ 你的map里面貌似有很多value吧?到底用那个value来排序呢?
      

  9.   

    map1、map2中只有一个元素,也就是这个样子map1<"one",1>,map2<"two",2>……依次类推。map中没有多个元素的。
      

  10.   

    那样子的话就排序就要做好多工作了,比较烦琐.你为什么不直接用一个Map来办你的事呢?因为你的数据都是一些<key,value>.
      

  11.   

    前辈有什么高招,我的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来排序的。
      

  12.   

    界面上的现实就是这样的
    名称   次数
    key   value
    key   value
    key   value
    key   value
    key   value
    key   value
    ……
    帮帮忙
      

  13.   

    前辈们有什么高招,我的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才能在界面上达到我要的效果啊
      

  14.   

    下面的类定义为内部类.
    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()); 以上代码没有经过调试,只用来表示算法.
      

  15.   

    如果只用Map.Collections.sort(tempMap.values())就完事了
      

  16.   

    顶treemap是会自动排序的,你把list里的map放那个map里就可以了
      

  17.   


    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;
    }
    }