代码之家  ›  专栏  ›  技术社区  ›  Nael Marwan

哈希表如何排序值?

  •  -1
  • Nael Marwan  · 技术社区  · 7 年前

    例如:

    a         b           c       d                   e
    Normal    2 weeks     Next    Save and Finish     Go to Cases
    

    哈希表。放(“a”,“正常”)。。。

    值的顺序将不同,并且与我们放置的顺序不同。 我认为订单如下:

    b         a        e              c         d                     
    2 weeks   Normal   Go to Cases    Next      Save and Finish 
    

    请建议解决该问题的数据结构。

    谢谢

    3 回复  |  直到 7 年前
        1
  •  6
  •   assylias    7 年前

    在这些情况下,答案往往是 in the documentation

    该类不保证映射的顺序;特别是,它不能保证顺序随时间保持不变。

        2
  •  2
  •   shanmuga    7 年前

    类似 HashMap HashTable

    原因
    HashTable 针对快速查找进行了优化。这是通过计算存储的键值的哈希来实现的。这确保了在 散列表 是O(1),则与中的条目数无关 .

    因此,根据为密钥生成的哈希存储条目。这就是为什么 散列表

    http://www.webopedia.com/TERM/H/hashing.html
    http://interactivepython.org/runestone/static/pythonds/SortSearch/Hashing.html

        3
  •  1
  •   ugo    7 年前

    如前所述,哈希表迭代顺序只是偶然的。如果您想保留插入顺序,请使用LinkedHashMap。如果您想获得自然顺序或预定义顺序,请使用树映射。作为自然顺序,我指的是键的顺序,例如String、Integer、Long等,作为实现可比接口,自动排序为实现可比的任何其他类。比较器也可以提供预定义的顺序,从而创建树映射。