请问大家怎么实现map的放入和取出的key的顺序完全相同?或者用其他方法代替map实现这个功能?请大家帮忙!

解决方案 »

  1.   

    public class LinkedHashMap<K,V>extends HashMap<K,V>implements Map<K,V>
    Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注意,如果在映射中重新插入 键,则插入顺序不受影响。(如果在调用 m.put(k, v) 前 m.containsKey(k) 返回了 true,则调用时会将键 k 重新插入到映射 m 中。)PS:TreeMap应该是不行的。本质是平衡二叉树,在插入的时候顺序就根据Comp~接口的方法实现改变了顺序了。
      

  2.   

    我刚刚测试了,LinkedHashMap实现了取出的顺序和放入的顺序完全相同,也是我想要实现的效果。
    TreeMap也有排序功能,但是我感觉TreeMap的排序是内部根据一定的规则自动排序的。比如按字母顺序排序或数字大小顺序排序。具体的还没细研究呢。
      

  3.   


    平衡二叉树嘛~
                5
            3       8
          2        6   9给你看看一些有用的URL
    http://healerkx.spaces.live.com/
    里面有二叉树的详细描述。
      

  4.   

    嘿嘿,TreeMap放进去是按内置的Comparator来排序的。
      

  5.   

    也可以通过放入一个有自增Integer的Key和Value放入。
    这样虽然进行了排序,但不改变顺序。呵呵
      

  6.   

    ArrayList就可以了啊 不需要用Map类的
      

  7.   

    ArrayList倒是能排序, 但怎么能代替MAP啊。
      

  8.   

    呵呵 既然是顺序存放的,直接用list或者数组吧。何必自找麻烦。
      

  9.   

    to
    jingyang1979那个二叉树的,应该有个Applet的演示的,一看你就明白了~
      

  10.   

    healer_kx(甘草(朝圣中... ...)的观点
    同意~!
    你可以查查Java DOC文档
      

  11.   

    TreeMap 不是合理的解释,因为他是按照一定的规则来排序的。比如String就回按字母顺序排序,因为String本身实现了comparable接口,覆盖了里面的campareTo方法。如果你放入的是其他的类,那么你就要考虑是否要自己去覆盖compareTo方法,编写自己的比较逻辑了。linkedHashMap可以说是一个合理的解释,因为他本身维护一个链式结构。
      

  12.   

    如果你只需要放入和取出的key的顺序完全相同,外包成一个类然后往list里面丢萨
    class A{
           Object key;
           Object value;
    }