答案 1
java.util.Hashtable 方法已同步,java.util.Hashmap 方法不是。如果您使用 Hashtable,则会出现性能下降,因为没有两个线程能够同时访问其方法。如果你关心你的应用程序中的线程安全,Hashtable就是要走的路。如果你不关心线程安全,Hashmap就是要走的路,因为它是有效的,那么hashtable.java.util.Hashtable也不允许任何空键,而java.util.HashMap允许一个空键。
答案 2
Hashtable是同步的,而HashMap不是。这意味着,如果您只有一个线程访问数据,请使用 HashMap,否则使用 Hashtable。
推荐
-
Java:一个“素数”还是一个“二的幂”作为HashMap大小? 许多书籍和教程都说,哈希表的大小必须是均匀分布所有存储桶中的键的素数。但是Java总是使用一个2的幂的大小。它不应该使用素数吗?更好的是,“素数”或“两个幂”作为哈希表大小?
-
为什么哈希表 11 的初始容量是 11,而哈希映射中的DEFAULT_INITIAL_CAPACITY是 16,需要 2 的幂? 比较JDK 1.6中的和源代码,我在HashMap中看到了下面的代码: 所以我的问题是:为什么HashMap需要2的幂作为初始容量,而Hashtable选择11作为默认的初始容量?我认为这与 Hashtable 是线程安全的,不
-
-
为什么LinkedHashSet<E>扩展HashSet<e>并实现Set<E> 今天打开了LinkedHashSet源代码,发现了一些有趣的事情: 问题是:当HashSet已经是Set时,为什么它们需要“扩展HashSet”和“实现Set”?
-