HashTable是否维护插入顺序?

以下代码以相同的插入顺序给出输出。 我读了javadoc,他们甚至没有谈论插入顺序。 有人可以帮助我获得正确的信息。

import java.util.*; public class hash { public static void main(String[] args) { String str[] = { "japan", "usa", "japan", "russia", "usa", "japan", "japan", "australia"}; int len = 8; Hashtable ht = new Hashtable(); int i = 0; while (i  " + ht.get(key)); } } } 

不,不是的。 要保留插入顺序,请使用java.util.LinkedHashMap ( javadoc )。

此外, HashMap现在比HashtableHashtable ,因为Hashtable具有不必要的并发开销。 (请参阅HashMap和Hashtable之间的差异? )

不,不是的。 它只知道“哈希”顺序。 如果你重新排序字符串,你会发现它们仍然以哈希表的相同顺序出现。

Hashtable用于快速查找而不是维护订单。 您应该查看LinkedHashMap或其他数据结构。

LinkedHashMap用于维护插入元素的顺序.Hashtable类似于HashMap,但它不允许空键或值,而HashMap允许一个空键和几个空值…

来自地图Javadoc。

地图的顺序定义为地图集合视图上的迭代器返回其元素的顺序。 一些地图实现,比如TreeMap类,对它们的顺序做出了特定的保证; 其他人,比如HashMap类,没有。

查看Hashtable和HashMap的代码也非常有用。