Java中HashMap和Hashtable之间的区别是什么?
对于非线程应用程序,哪个更有效?
Java中HashMap和Hashtable之间的区别是什么?
对于非线程应用程序,哪个更有效?
当前回答
Hashtable是同步的,而HashMap不是。另一个区别是HashMap中的迭代器是故障安全的而Hashtable的枚举器不是。如果您更改地图在迭代时,你会知道。HashMap允许其中包含空值,而Hashtable不允许。
其他回答
Hashtable与HashMap类似,具有类似的接口。建议您使用HashMap,除非您需要支持遗留应用程序或需要同步,因为Hashtable方法是同步的。因此,在您不是多线程的情况下,HashMaps是您的最佳选择。
我的小贡献:
Hashtable和HashMap之间的第一个也是最重要的区别是,HashMap不是线程安全的,而Hashtable是线程安全的集合。Hashtable和HashMap之间的第二个重要区别是性能,因为HashMap不同步,所以性能比Hashtable好。Hashtable与HashMap的第三个区别是Hashtable是过时的类,应该在Java中使用ConcurrentHashMap代替Hashtable。
HashMap和HashTable
关于HashMap和HashTable的一些要点。请阅读以下详细信息。
1) Hashtable和Hashmap实现java.util.Map接口2) Hashmap和Hashtable都是基于哈希的集合。并致力于哈希。所以这些是HashMap和HashTable的相似性。
HashMap和HashTable之间的区别是什么?
1) 第一个区别是HashMap不是线程安全的,而HashTable是ThreadSafe的2) HashMap性能更好,因为它不是线程安全的。而Hashtable的性能并不是更好,因为它是线程安全的。因此多个线程不能同时访问Hashtable。
Hashtable是同步的,而HashMap不是。这使得Hashtable比Hashmap慢。
对于单线程应用程序,请使用HashMap,因为它们在功能方面是相同的。
HashTable和HashMaps有5个基本区别。
映射允许您迭代和检索键、值以及两个键-值对,而HashTable不具备所有这些功能。Hashtable中有一个函数contains(),使用起来非常混乱。因为contains的意思稍有偏差。它是指包含键还是包含值?很难理解。在Maps中,我们有ContainsKey()和ContainsValue()函数,这两个函数非常容易理解。在hashmap中,您可以在迭代时安全地删除元素。因为这在哈希表中是不可能的。HashTables默认情况下是同步的,因此可以轻松地与多个线程一起使用。默认情况下,as HashMaps不同步,因此只能用于单个线程。但您仍然可以使用Collections-util类的synchronizedMap(Mapm)函数将HashMap转换为synchronized。HashTable不允许空键或空值。其中作为HashMap允许一个空键和多个空值。