java中hashmap和hashtable的区别
发布网友
发布时间:2022-03-26 07:56
我来回答
共2个回答
热心网友
时间:2022-03-26 09:25
1 HashMap不是线程安全的
hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。
2 HashTable是线程安全的一个Collection。
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。
热心网友
时间:2022-03-26 10:43
一个有序,一个无序
hashtable和hashmap区别
Hashtable和HashMap的区别 一、数据存储方式的差异 HashMap采用了键值对的存储方式,以哈希表结构进行数据存储。其基于哈希表的数组实现方式允许其在理想情况下实现O的查询效率。而Hashtable同样采用键值对存储方式,但其实现方式相对复杂,除了哈希表结构外还涉及链表等其他数据结构。二、线程安全性的差异 Ha...
hashmap和hashtable的区别
一、hash数组默认大小不同 1、HashMap:HashMap中 hash数组的默认大小是16,而且一定是2的指数。2、Hashtable:HashTable中hash数组默认大小是11,增加的方式是 old*2+1。二、线程安全不同 HashMap不是线程安全的,HashTable是线程安全。HashMap允许空(null)键值(key),由于非线程安全,效率上可能...
HashMap和Hashtable的区别是啥呢?
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因...
java中,HashMap和Hashtable有什么区别?
HashMap允许键和值是null,而Hashtable不允许键或者值是null。Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration)。一般认为Hashtable是...
HashMap和Hashtable的区别是什么?
HashMap和Hashtable是Java中两种常见的Map接口实现,它们在功能和使用场景上有所差异。HashMap是Hashtable的轻量级非线程安全版本,当单线程环境下,其效率相对更高。一个显著的区别在于,HashMap允许键值对中的键或值为null,而Hashtable则严格禁止。在方法设计上,HashMap去掉了contains方法,改为了contains...
hashtable和hashmap的区别是什么?
1、HashTable是同步(方法中使用了Synchronize)的;而HashMap是未同步(方法中缺省Synchronize)的。2、Hashtable线程安全,因为它每个方法中都加入了Synchronize,在多线程并发的环境下,可以直接使用Hashtable,不需自己在加同步;HashMap线程不安全,因为HashMap底层是一个Entry数组,当发生hashmap冲突的时候...
hashmap和hashtable的区别
HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。另一个区别是HashMap的迭代器(Iterator)是fail-...
Java中HashMap和Hashtable及HashSet的区别
hastTable和hashMap的区别:(1)Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。(2)这个不同即是最重要的一点:Hashtable中的方法是同步的,而HashMap方法(在缺省情况下)是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于...
HashMap与HashTable的区别
Hashtable和HashMap类有三个重要的不同之处。第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,虽然你可以不用采取任何特殊的行为就可以在一个多线程的应用...
HashMap和Hashtable的区别?
HashMap和Hashtable都是Java中实现Map接口的数据结构,但它们在设计和使用上存在显著区别。首先,HashMap是非线程安全的,相较于Hashtable,它在效率上可能稍有优势,允许空键值对的插入,提供了灵活性。然而,Hashtable不允许null键值,且其contains方法被替换为containsValue和containsKey,以减少可能的误解。