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
现在比Hashtable
更Hashtable
,因为Hashtable
具有不必要的并发开销。 (请参阅HashMap和Hashtable之间的差异? )
不,不是的。 它只知道“哈希”顺序。 如果你重新排序字符串,你会发现它们仍然以哈希表的相同顺序出现。
Hashtable
用于快速查找而不是维护订单。 您应该查看LinkedHashMap
或其他数据结构。
LinkedHashMap用于维护插入元素的顺序.Hashtable类似于HashMap,但它不允许空键或值,而HashMap允许一个空键和几个空值…
来自地图Javadoc。
地图的顺序定义为地图集合视图上的迭代器返回其元素的顺序。 一些地图实现,比如TreeMap类,对它们的顺序做出了特定的保证; 其他人,比如HashMap类,没有。
查看Hashtable和HashMap的代码也非常有用。