HashMap与HashTable的区别

简介: HashMap与HashTable的区别

HashMap与HashTable的区别

1、HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。


2、HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsValue 和 containsKey。

因为 contains 方法容易让人引起误解。


3、HashTable 继承自 Dictionary 类,而 HashMap 继承AbstractMap是 Java1.2 引进的。


4、HashTable 的方法是 Synchronize 的,而 HashMap 不是,在多个线程访问 Hashtable

时,不需要自己为它的方法实现同步,而 HashMap 就必须为之提供外同步。


5、执行效率不一样,HashMap事非线程的,属于HashTablede轻量级实现,效率较高;HashTable是线程安全的,效率高,两者的方法的区别区别是hashtable 对 方法加锁。


6、hashmap可以用iterator遍历,而hashtable还可以用enumeration


7、hashtable初始容量是11,每次2n+1,hashmap初始为16


8、hashmap由于长度固定是2的次幂,所以不做出运算,直接做位移运算,但是hash冲突会增加,所以hashmap还会做一些运算,hashtable是jdk根据对象

的地址或字符串算出来的int类型的数值,在用除留余数获取最终的位置


jdk5之后高并发的情况下建议用ConcurrentHashMap而非hashtable


目录
相关文章
|
26天前
|
安全
HashTable与HashMap的区别
(1)HashTable的每个方法都用synchronized修饰,因此是线程安全的,但同时读写效率很低 (2)HashTable的Key不允许为null (3)HashTable只对key进行一次hash,HashMap进行了两次Hash (4)HashTable底层使用的数组加链表HashTable与HashMap的区别
23 2
|
2月前
|
存储 开发者
HashMap和Hashtable的key和value可以为null吗,ConcurrentHashMap呢
HashMap的key可以为null,value也可以为null;Hashtable的key不允许为null,value也不能为null;ConcurrentHashMap的key不允许为null
|
2月前
|
Java
Java基础之 JDK8 HashMap 源码分析(中间写出与JDK7的区别)
这篇文章详细分析了Java中HashMap的源码,包括JDK8与JDK7的区别、构造函数、put和get方法的实现,以及位运算法的应用,并讨论了JDK8中的优化,如链表转红黑树的阈值和扩容机制。
32 1
|
2月前
|
存储 缓存 Java
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
41 1
|
4月前
|
存储 安全 Java
一天十道Java面试题----第二天(HashMap和hashTable的区别--------》sleep、wait、join)
这篇文章是关于Java面试的第二天笔记,涵盖了HashMap与HashTable的区别、ConcurrentHashMap的实现原理、IOC容器的实现方法、字节码的概念和作用、Java类加载器的类型、双亲委派模型、Java异常体系、GC如何判断对象可回收、线程的生命周期及状态,以及sleep、wait、join、yield的区别等十道面试题。
一天十道Java面试题----第二天(HashMap和hashTable的区别--------》sleep、wait、join)
|
4月前
|
存储 Java
【Java集合类面试七】、 JDK7和JDK8中的HashMap有什么区别?
JDK7中的HashMap使用数组加链表解决冲突,而JDK8增加了红黑树结构以优化链表过长时的性能,提高查找效率。
|
4月前
|
安全 Java
【Java集合类面试十五】、说一说HashMap和HashTable的区别
HashMap和Hashtable的主要区别在于Hashtable是线程安全的,不允许null键和值,而HashMap是非线程安全的,允许null键和值。
|
4月前
|
安全 Java
【Java集合类面试十六】、HashMap与ConcurrentHashMap有什么区别?
HashMap是非线程安全的,而ConcurrentHashMap通过减少锁粒度来提高并发性能,检索操作无需锁,从而提供更好的线程安全性和性能。
|
4月前
|
存储 安全 Java
Hashtable 和 HashMap 的区别
【8月更文挑战第22天】
166 0
|
5月前
|
存储 安全 Java
Java面试题:请解释Java内存模型,并说明如何在多线程环境下使用synchronized关键字实现同步,阐述ConcurrentHashMap与HashMap的区别,以及它如何在并发环境中提高性能
Java面试题:请解释Java内存模型,并说明如何在多线程环境下使用synchronized关键字实现同步,阐述ConcurrentHashMap与HashMap的区别,以及它如何在并发环境中提高性能
44 0