我想知道hashtable在使用Put方法后如何对其值进行排序。
例如:
a b c d e
Normal 2 weeks Next Save and Finish Go to Cases
hashtable.put("""正常&#34); ...
值的顺序将不同,而不是我们放置的顺序。 我认为订单会是这样的:
b a e c d
2 weeks Normal Go to Cases Next Save and Finish
请建议解决问题的数据结构。
感谢。
答案 0 :(得分:6)
在这些情况下,答案通常是in the documentation:
此课程不保证地图的顺序;特别是,它不保证订单会随着时间的推移保持不变。
答案 1 :(得分:2)
与HashMap类似,HashTable也不保证元素的插入顺序。
<强>原因强>
HashTable
已针对快速查找进行了优化。这是通过计算存储的键值的散列来实现的。这样可以确保在HashTable
中搜索任何值为O(1),无论HashTable
中的数字条目如何,都会占用相同的时间。
因此,基于为密钥生成的散列来存储条目。这就是为什么HashTable
不能保证插入元素的顺序的原因。
哈希值(或简称哈希),也称为消息摘要,是从一串文本生成的数字。哈希值远小于文本本身,并且由公式生成,使得某些其他文本极不可能产生相同的哈希值。
http://www.webopedia.com/TERM/H/hashing.html
http://interactivepython.org/runestone/static/pythonds/SortSearch/Hashing.html
答案 2 :(得分:1)
如前所述,哈希表迭代顺序只是随意的。如果要保留插入的顺序,请使用LinkedHashMap。如果要获取自然顺序或预定义顺序,请使用TreeMap。作为自然顺序,我的意思是键的顺序,例如String,Integer,Long等,作为实现Comparable接口,自动排序为实现Comparable的任何其他类。预定义的顺序也可以由比较器提供,创建TreeMap。