有没办法让HashMap的keySet()方法得到的Set顺序与put()入时的一样

解决方案 »

  1.   

    估计没办法。那样的的话,就不叫“Hash”Map了。因为失去了HashMap最大的特性:查询速度快。
    HashMap按照key的HashCode排序,从而达到比线性搜索甚至二分搜索都高的查询速度。
      

  2.   

    并不是完全没有办法!至少是我们现在没有用心去想!
    你可以研究一下HashMap的源代码,找出实现方法put的具体算法,然后根据这个算法写一个处理方法,就可以得到你想要的结果!不过很难的,呵呵!
      

  3.   

    我觉得不是用心不用心的问题,也不用研究源代码,完全可以继承HashMap,通过在派生类中增加一个按照插入顺序排序的键的List来达到目的。
    但楼主问的是HashMap。:(
      

  4.   

    这个不大可能吧,Hash就决定了KeySet的顺序是散列的啊
      

  5.   

    MAP本身就其自己的一种排序方法,按照hashcode定义的规则。如果一定要按照put时的顺序,可以考虑用list吧,不过查找效率会低,还可以考虑用set来实现吧,定义set时,需要覆写其equals和hashcode方法,取出的时候按照定义的规则去处理
      

  6.   

    根据key的hashCode赖排序,并没有记录put()的先后顺序。
      

  7.   

    或者自己写一个和HashMap类似的HashMap,按这种规则放,或者是取出来然后自己排次序就行了
      

  8.   

    在JDK1.4中是可以的!你可以使用LinkedHashMap,它已经完成了这个功能
      

  9.   

    它的存储还是和HashMap一样,只是增加多了一个插入顺序的链表
      

  10.   

    在JDK1.4中是可以的!你可以使用LinkedHashMap,它已经完成了这个功能
    同意这个老大的说法。用这个可以排序的
      

  11.   

    哦,对的,已经有了,呵呵。
    就是LinkedHashMap。
    又土了一把。-_-
      

  12.   

    KeySet的顺序是散列的,好象不能行
    我也建议你用使用LinkedHashMap,很容易实现的