hashmap和hashtable哪个是线程安全的
Hashtable.
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算法都大概一样,所以性能不会有很大的差异。
Hashtable是从JDK
1.0问世开始就存在的基本工具类,具有线程安全。
历史久,多在Java的早期分支版本比如Java
ME,Java
Card等中没有条件具备大型集合库的小型环境下使用。
HashMap属于J2SE/JDK
1.2开始新增的JCL集合库,属于新库中的组件。不具备线程安全。
HashMap和集合库中其他接口配合的更紧密,所以也被更广泛地使用。
功能上差不多,单线程下很大程度上可以互相替换使用。
Hashtable不接受null做为键或值。
HashMap可以接受一个null做健,和允许null做值
HashMap和Hashtable的区别:
HashMap:非线程安全;
初始化容量16,扩容2倍;
key和value可以为null。
Hashtable:线程安全;
初始化容量11,扩容2倍+1
key和value都不能是null。
面试中如何回答HashMap的工作原理
hashmap与hashtable的区别?HashTable和HashMap的实现原理几乎一样,差别无非是 HashTable不允许key和value为null HashTable是线程安全的 但是HashTable线程安全的策略实现代价却太大了,简单粗暴,get\/put所有相关操作都是synchronized的,这相当于给整个哈希表加了一把大锁。多线程访问时候,只要有一个线程...
javajava中Map类有什么作用,具体怎么用
但如果想不出办法,则一个可行的解决方案是再创建一个 Map,并将第一个 Map 的所有值作为键。 这样,第一个 Map 上的 containsValue() 将成为第二个 Map 上更有效的 containsKey()。 网友评论:2 HashMap和Hashtable的区别2007-04-05 12:07HashMap是Java 1.2引进的Map接口的一个实现 Hashta...
java中几种Map在什么情况下使用,并简单介绍原因及原理
Map中包含一个内部类:Entry。该类封装了一个键值对,它包含了三个方法:1、Object getKey():返回该Entry里包含的key值。2、Object getValeu():返回该Entry里包含的value值。3、Object setValue(V value):设置该Entry里包含的value值,并返回新设置的value值。二、HashMap和Hashtable实现类:1、...
Java中HashMap和LinkedHashMap以及TreeMap的区别
在Map 中插入、删除和定位元素,HashMap 是最好的选择。2.TreeMap取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。3. LinkedHashMap 是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现. (应用场景:购物车等需要顺序的)...
33条C#、.Net经典面试题目及答案
答final用于申明属性 方法和类 表示属性不可变 方法不可以被覆盖 类不可以被继承 Finally是异常处理语句结构中 表示总是执行的部分 Finallize表示是object类一个方法 在垃圾回收机制中执行的时候会被调用被回收对象的方法 HashMap和Hashtable区别? 答HashMap是Hashtable的轻量级实现 非线程安全的实现他们都实现了m...
ArrayMap 和HashMap的区别
常用的集合类有一下几种:List结构的集合类:ArrayList类,LinkedList类,Vector类,Stack类 Map结构的集合类:HashMap类,Hashtable类 Set结构的集合类:HashSet类,TreeSet类 Queue结构的集合:Queue接口 HashMap和Hashtable的区别:HashMap和Hashtable都是java的集合类,都可以用来存放java对象,这是他...
Java中HashMap和TreeMap的区别
如ArrayList和Vector,HashMap和Hashtable (后者每个方法前都有synchronized关键字)。如果你在interator一个List对象时,其它线程remove一个element,问题就出现了。 2、每个线程都有自己的字段,而不会在多个线程之间共享。它主要体现在java.lang.ThreadLocal类,而没有Java关键字支持,如像static、transient那样。 1....
java中hashset和hashmap 有什么特点。
HashMap是非synchronized的,但collection框架提供方法能保证HashMap synchronized,这样多个线程同时访问HashMap时,能保证只有一个线程更改Map。public Object put(Object Key,Object value)方法用来将元素添加到map中。你可以阅读这篇文章看看HashMap的工作原理,以及这篇文章看看HashMap和HashTable的区别。Hash...
010 有顺序的Map的实现类:TreeMap和LinkedHashMap
Hashtable与同步的特性\/ Hashtable与HashMap类似,但它具有线程同步的特性,确保任何时候只有一个线程写入,这使得它在写入操作上更安全,但代价是性能稍有降低,尤其是对于大量写入时。TreeMap:有序的存储\/ TreeMap是SortMap接口的实现,它保证了记录的有序性。默认情况下,键按照升序排列,但用户可以自...
ConcurrentHashMap常问问题
如果过小就会产生锁竞争,如果过大,那么就会导致本来位于同一个Segment的的访问会扩散到不同的Segment中,导致性能下降。JDK1.8中摈弃了Segment的概念,选择使用HashMap的结构,并发度依赖于数组的大小。ConcurrentHashMap效率高,因为hashTable是给整个hash表加锁,而ConcurrentHashMap锁粒度要更低。使用...
别败盐酸: Hashtable和HashMap类有三个重要的不同之处.第一个不同主要是历史原因.Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现.也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是....
调兵山市18339189306: HashTable和HashMap的区别 - ?
别败盐酸: 1 HashMap不是线程安全的 hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值.HashMap允许null key和null value,而hashtable不允许. 2 HashTable是线程安全...
调兵山市18339189306: HashMap和Hashtable的区别?
别败盐酸:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable. HashMap允许将null作为一个entry的key或者value,而...
调兵山市18339189306: Hashtable 和 HashMap 的区别:?
别败盐酸: 答:HashMap 是 Hashtable的一个轻量级实现,HashMap里面的方法是异步的,效率要高,因为异步的时候大家都可以用,所以效率要高; 而Hashtable里面的方法不是异步的,而是同步的一个时间段里只能一个人访问所以效率要低.但是它保...
调兵山市18339189306: 求问HashMap和Hashtable有什么区别和什么相同点? - ?
别败盐酸: HashMap和HashTable本质上是差不多的,在1.4版本以前是没有HashMap的 只有HashTable,他们的区别是HashTable是线程安全的,但是HashMap不是线程安全的,HashMap的性能要比HashTable好一些,所以,在不考虑线程安全的情况下,Java是推荐使用HashMap的.
调兵山市18339189306: Hashtable与HashMap有什么区别??
别败盐酸: 唯一的不同就是Hashtable是支持多线程同步访问的,也就是说,是多线程安全的.HashMap则不是多线程安全的,要想做到多线程安全,需要程序员自己做同步.
调兵山市18339189306: HashTable与HashMap的区别 - ?
别败盐酸: a.Hashtable是继承自陈旧的Dictionary类的,HashMap继承自AbstractMap类同时是Java 1.2引进的Map接口的一个实现. b.也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是.这就意味着,然你可以不用采取任何特殊的行...
调兵山市18339189306: Hashtable与HashMap有什么区别? - ?
别败盐酸: hashmap 线程不安全 允许有null的键和值 效率高一点、 方法外同步 有containsvalue和containsKey方法 HashMap 是Java1.2 引进的Map interface 的一个实现 HashMap是Hashtable的轻量级实现 hashtable 线程安全 不允许有null的键和值 效率稍低、 方法是是Synchronize的 有contains方法方法 、Hashtable 继承于Dictionary 类 Hashtable 比HashMap 要旧
调兵山市18339189306: HashMap和HashTable之间有什么区别 - ?
别败盐酸: 基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同.)此类不保证映射的顺序(顺序保存可以使用TreeMap或者数组列表),...
调兵山市18339189306: HashTable和HashMap区别 - ?
别败盐酸: 1 HashMap不是线程安全的 hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值.HashMap允许null key和null value,而hashtable不允许. 2 HashTable是线程安全...