问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

hashtable和hashmap有什么区别,共同之处?、

发布网友 发布时间:2022-03-29 14:53

我来回答

3个回答

热心网友 时间:2022-03-29 16:22

Hashtable和HashMap有什么区别
1.Hashtable和HashMap有什么区别?
  a.Hashtable是继承自陈旧的Dictionary类的,HashMap继承自AbstractMap类同时是Java 1.2引进的Map接口的一个实现。
  b.也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,然你可以不用采取任何特殊的行为就可以在一个 多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时,你不能切断Hashtable中的同步(比如在一个单线程的应用程序中),而且同步增加了很多处理费用。
  c.第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。
  d.HashMap去掉了Hashtable的contains方法,保留了containsValue和containsKey方法
  e.Hashtable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数
HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是说建议使用HashMap,不要使用HashTable。可能你觉得HashTable很好用,为什么不用呢?这里简单分析他们的区别。1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。3.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。4.HashTable使用Enumeration,HashMap使用Iterator。 以上只是表面的不同,它们的实现也有很大的不同。5.HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。6.哈希值的使用不同,HashTable直接使用对象的hashCode,代码是这样的:int hash = key.hashCode();int index = (hash & 0x7FFFFFFF) % tab.length;而HashMap重新计算hash值,而且用与代替求模:int hash = hash(k);
int i = indexFor(hash, table.length);static int hash(Object x) {
   int h = x.hashCode();
   h += ~(h << 9);
   h ^= (h >>> 14);
   h += (h << 4);
   h ^= (h >>> 10);
   return h;
}
static int indexFor(int h, int length) {
   return h & (length-1);
}
以上只是一些比较突出的区别,当然他们的实现上还是有很多不同的,比如HashMap对null的操作。
Hashtable和HashMap的区别:
1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;
2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题可通过Collections的一个静态方法得到解决:
Map Collections.synchronizedMap(Map m)
这个方法返回一个同步的Map,这个Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的。
3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现HashMap允许将null作为一个entry的key或者value,而Hashtable不允许还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在
多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap
就必须为之提供外同步。Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。来自:求助得到的回答

热心网友 时间:2022-03-29 17:40

 a.Hashtable是继承自陈旧的Dictionary类的,HashMap继承自AbstractMap类同时是Java 1.2引进的Map接口的一个实现。
  b.也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,然你可以不用采取任何特殊的行为就可以在一个 多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap
C.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。
D.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
E.HashTable有一个contains(Object value),功能和containsValue(Object value)功能一样。

热心网友 时间:2022-03-29 19:15

该题可以在 ,有很多解答.我这需要说明下 这个是面试常 问的但hashtable 基本被淘汰了 ,可用concurrentMap 替代
java中,HashMap和Hashtable有什么区别?

HashMap允许键和值是null,而Hashtable不允许键或者值是null。Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration)。一般认为Hashtable是...

HashMap和Hashtable的区别是啥呢?

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因...

hashtable和hashmap区别

Hashtable和HashMap的区别 一、数据存储方式的差异 HashMap采用了键值对的存储方式,以哈希表结构进行数据存储。其基于哈希表的数组实现方式允许其在理想情况下实现O的查询效率。而Hashtable同样采用键值对存储方式,但其实现方式相对复杂,除了哈希表结构外还涉及链表等其他数据结构。二、线程安全性的差异 Ha...

Map接口,HashMap和HashTable的相同点和不同点分别是什么?

Hashtable和HashMap的区别:1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于HashMap,则需要额外的同步机制。但HashMap的同步问题...

hashmap和hashtable的区别

HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。另一个区别是HashMap的迭代器(Iterator)是fail-...

hashmap和hashtable的区别

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是Java中两种常见的Map接口实现,它们在功能和使用场景上有所差异。HashMap是Hashtable的轻量级非线程安全版本,当单线程环境下,其效率相对更高。一个显著的区别在于,HashMap允许键值对中的键或值为null,而Hashtable则严格禁止。在方法设计上,HashMap去掉了contains方法,改为了contains...

Java中HashMap和Hashtable及HashSet的区别

hastTable和hashMap的区别:(1)Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。(2)这个不同即是最重要的一点:Hashtable中的方法是同步的,而HashMap方法(在缺省情况下)是非同步的。即是说,在多线程应用程序中,不用专门的操作就安全地可以使用Hashtable了;而对于...

hashtable和hashmap的区别是什么?

一、继承父类不同 Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类;但二者都实现了Map接口。二、线程的安全性 1、HashTable是同步(方法中使用了Synchronize)的;而HashMap是未同步(方法中缺省Synchronize)的。2、Hashtable线程安全,因为它每个方法中都加入了Synchronize,在多线程并发的环境下...

HashMap和Hashtable的区别?

HashMap和Hashtable都是Java中实现Map接口的数据结构,但它们在设计和使用上存在显著区别。首先,HashMap是非线程安全的,相较于Hashtable,它在效率上可能稍有优势,允许空键值对的插入,提供了灵活性。然而,Hashtable不允许null键值,且其contains方法被替换为containsValue和containsKey,以减少可能的误解。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么是~直接行销(直接营销) 直接营销方式有哪些 现在基金定投沪深300合适么?麻烦推荐一只沪深300的指数基 在一支试管里放三只火柴,火柴头向下,用橡皮塞轻轻塞住 电脑主机总是黑屏,要重新开才可以,重开之后总是出现写着DSUB的小框框... 悍马路虎到底哪个才是越野之王? 黄山限流是什么意思? 以"我和祖国"为话题的作文300---400字左右 要自己写的 写一篇作文&lt;&lt;歌颂祖国,热爱祖国&gt;&gt;怎么写? 华硕X42JZ 笔记本运行游戏赤壁无法更新? HashTable和HashMap的区别 Redis 有没有什么命令可以查询当前库有多少个 key 请教各位,如何获得redis中key的已经存在的时间 如何读取redis中的key值中的结果 redistemplate 怎么获取所有keys 为什么用redismanager查看key中的value是0代码get... 查看redis缓存某个key里面有多少数据 redis key的值是什么类型 redis怎么查询key和删除缓存 Redis中key的数据类型有哪些 redis中hash的key怎么用命令查看 腾讯云存储redis怎么查看所有的key php怎么查看redis的key 怎么查看redis key的值 redis 查看key的类型,是什么命令 HashTable集合的同步表现在哪?于和hashMap的异步在编译执行过程中有何区别? HashMap和Hashtable的共同点和不同点在于什么? 我是江苏户口,已有5年幼教工作经历,我想考上海幼... 我是外地人 师范专业 如果要考幼师 那么上海幼师资... 亲&#39;问你啊&#39;上海考幼师需要什么条件?考几门?非师... Hashtable与HashMap有什么区别? 步长稳心颗粒怎么样 稳心颗粒怎样停药 心律失常,想服用稳心颗粒,怎么服,一盒能服多少天 步长稳心颗粒怎么样? 稳心颗粒什么品牌冲水喝怎么这么牙碜 稳心颗粒泡水沉淀下来的确实是铁沙怎么回事? 窦性心律不齐,吃稳心颗粒效果如何? 稳心颗粒吃多会怎么样 稳心颗粒老年可以持续服用么 后来吃过一阵稳心颗粒,最近又比较明显的心慌,怎么办 吃完稳心颗粒腿怎么还肿了呢? 心脏有房性早搏和室性早搏服用稳心颗粒效果怎么样 稳心颗粒,没有开水怎么服用 稳心颗粒 可以吗,我才19岁怎么办 请问稳心颗粒对心动过速有作用吗?怎么办好呢? 心跳快吃了一盒稳心颗粒怎么还是快 吃了稳心颗粒感觉气饱闷胀是怎么回事 稳心颗粒与谷维素 货车空调不制冷什么原因 ?怎么解决?