HashMap好像不能排序

解决方案 »

  1.   

    咋排?我要按照key或者value排序
      

  2.   

    不能排,能排的话,哈希算法也就没有意义了.就是要把这些值散列开才爽啊
    如果要排序, 请用TreeMap
      

  3.   

    HashMap岂止不能排序!就算你把排好序的元素依次放进HashMap、过段时间其次序会随机变乱的。
    HashMap不能保证元素顺序、遇到虚拟机不定时的整理内存堆肯定会把其次序打乱、只能保证元素不会丢。
      

  4.   

    JDK上面写得很清楚,为什么你不看一下呢?This class makes no guarantees as to the order of the map。in particular, it does not guarantee that the order will remain constant over time.(jdk1.4.2/java.Util.HashMap)
    不保证影射顺序, 尤其不保证映射顺序不变。也就是说,你按照顺序放进去的,取出来也会乱
      

  5.   

    我不是这个意思
    hash本身就是散列的意思,是随机的顺序
    不过Perl也有hash
    perl的hash也是随机的顺序
    但是可以排序
    (sort keys %hash)就是对一个hash按照key排序
      

  6.   

    按”key”/”value”是可以排序的
    不能排序是指不能按照放进去的顺序取出来
      

  7.   

    不同场合应用不同的集合,你不要强求HashMap排序。
      

  8.   

    将key或者value取出来作为list,对list来排序就行了
      

  9.   

    TreeMap可以按key排序(put的时候就已经排序好了)
    LinkedHashMap可以保持插入顺序
      

  10.   

    LinkedHashMap 是 JDK1.4 才有的,使用时要注意
      

  11.   

    刚查了JDK的文档
    Treemap似乎效率低一些
    LinkedHashMap可以按照插入顺序排序
    我主要是想按照hash的key排序,并不是要求插入顺序
      

  12.   

    只是不太清楚这个加载因子是什么意思
    load factor
      

  13.   

    我主要是想按照hash的key排序,并不是要求插入顺序
    ---------------
    自己写个map,实现comparator接口,定义按key的hashcode排序的compare方法
    最后存到collection里
      

  14.   

    对,实现Comparable接口的compareTo方法,就可以实现了。Collections.sort(java.util.List), Arrays.sort(Object[]), SortedSet, SortedMap, TreeSet, TreeMap上面的这些都可以用。
      

  15.   

    我主要是想按照hash的key排序,并不是要求插入顺序
    ---------------
    自己写个map,实现comparator接口,定义按key的hashcode排序的compare方法
    最后存到collection里----------------
    这里讲得有问题
    要么不要用hashmap了,hashmap注定排不了序
    可以自己写个类,存key-value的pair,然后实现compare方法,按key的hashcode比较
      

  16.   

    HashMap 本身是散列集合,散列是它实现的主要目标,散列与排序是对立的,最起码是不兼容的。因此你选择HashMap的同时,就选择了散列,而不是有序序列。如果由于某些困难实在要求用HashMap,而又要排序。我认为可以这样实现:Set yourHashMap.keySet() 产生一个关键字散列表,将它们取出来,进行某种排序,然后在根据关键字,到散列表中取值。
    load factor 的意思是:它决定何时对散列表进行散列。默认值是0.75,当散列表有75%的位置放满时,散列表自动使用两倍的散列表元尽心再散列。
      

  17.   

    HashMap ,HashTable两者的区别是什么?谁能解释一下呀?
      

  18.   

    hashmap本身是不可以排序,只能通过其他手段进行排序.
      

  19.   

    HashMap ,HashTable两者的区别是什么?谁能解释一下呀?
    -------
    HahsTable是同步的,而HashMap不是,所以在多线程中应该使用HashTable
      

  20.   

    Hashtable是一个历史遗留问题,多线程下也不必用它使用HashMap的同步视图即可,Collections.synchronizedMap(new HashMap());
      

  21.   

    楼上正解,同步也应该使用Collections提供的解决方案.
      

  22.   

    如果你想简单的按key和value排序用TreeMap排序就行了。
    Map map=new TreeMap();
    Iterator iterator=map.keySet().iterator();while(iterator.hasNext()) {Object key=iterator.next();
    Object value=map.get(key);
    }如果你想按输入时的顺序取出数据请你用apache的collections包中的SequencedHashMap来做。具体操作和上面一样用于给一个select的option设置value和displayString。(在你不想改变map中存入顺序的情况下。)
      

  23.   

    hashmap本来就是散列表,要排序就不要用这个咯。