Hashmap 和hashtable的区别什么区别

HashMap和Hashtable的区别 - 推酷
HashMap和Hashtable的区别
1、HashMap的很多方法都不是线程安全的。Hashtable中大部分的方法都是线程安全的。而且HashMap中允许key为null,而Hashtable不允许。
也就是说:大部分(例如Hashtable里面的containsValue方法就不是synchronized)
Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。&
这些都可以从源码中看出来,
HashMap中的put方法:
public V put(K key, V value) {//这个API的设计的时候为什么要有返回值????有点不知道为什么。。。而且按照驼峰命名法,Hashtable的拼写规则应该是HashTable
if (key == null)
return putForNullKey(value);
int hash = hash(key.hashCode());
int i = indexFor(hash, table.length);
for (Entry&K,V& e = table[i]; e != e = e.next) {
if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {
V oldValue = e.
e.recordAccess(this);
return oldV
modCount++;
addEntry(hash, key, value, i);
Hashtable中的put方法
public synchronized V put(K key, V value) {
// Make sure the value is not null
if (value == null) {
throw new NullPointerException();
// Makes sure the key is not already in the hashtable.
Entry tab[] =
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.
for (Entry&K,V& e = tab[index] ; e != e = e.next) {
if ((e.hash == hash) && e.key.equals(key)) {
V old = e.
2、二者都实现了Map接口。但Hashtable继承与Dictionary这个类,而HashMap继承与AbstractMap这个抽象类(其实AbstractMap也还是实现了Map接口的)。代码如下:
Hashtable的部分源码如下:
public class Hashtable&K,V&
extends Dictionary&K,V&
implements Map&K,V&, Cloneable, java.io.Serializable {
HashMap的部分源码如下:
public class HashMap&K,V&
extends AbstractMap&K,V&
implements Map&K,V&, Cloneable, Serializable
AbstractMap部分源码如下:
public abstract class AbstractMap&K,V& implements Map&K,V& {
* Sole constructor.
(For invocation by subclass constructors, typically
* implicit.)
protected AbstractMap() {
3、有人说,
HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。(其实,hashtable中也是有containsKey和containsValue这两个方法的,至少我看的版本的源码中是包含这两个方法的。只是hashTable中的ContainsValue内部还是调用他自己的contains()方法
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致找好工作,快人一步<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 hashtable的区别 的文章

 

随机推荐