Java中Hashtable和HashMap区别
来源:互联网 发布:python输出语句 编辑:程序博客网 时间:2024/06/06 04:39
第一,继承和实现不同
public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
第二,线程安全不同
Hashtable 中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。Hashtable的所有 public 方法声明中都有 synchronized 关键字。在多线程并发的环境下,可以直接使用Hashtable,但是要使用HashMap的话就要自己增加同步处理了。
第三,对NULL处理不同
Hashtable中,key和value都不允许出现null值。
在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。
第四,两个遍历方式的内部实现上不同
Hashtable、HashMap都使用了 Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。
第五,哈希值使用不同
哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。
HashTable:
int hash = key.hashCode();int index = (hash & 0x7FFFFFFF) % tab.length;HashMap:
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);
第六,默认大小和增长方式不同
Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
0 0
- java中hashmap和hashtable的区别
- java中hashmap和hashtable的区别
- Java中HashTable和HashMap的区别
- java中hashmap和hashtable的区别
- Java中hashmap和hashtable的区别
- java中hashMap和hashtable的区别
- Java中hashmap和hashtable的区别
- Java中hashmap和hashtable的区别
- Java中hashmap和hashtable的区别
- Java中hashmap和hashtable的区别
- Java中hashmap和hashtable的区别
- JAVA中HashMap和Hashtable区别
- Java中HashMap和HashTable的区别
- Java中HashMap和HashTable的区别 .
- JAVA中HashMap和Hashtable区别 .
- Java中hashmap和hashtable的区别
- Java中hashmap和hashtable的区别
- Java中HashMap和HashTable的区别
- 视频相关
- Nofollow标签的写法以及运用
- Android开发通讯录小结
- [Java Performance] 数据库性能最佳实践 - JPA缓存
- 使用mysql的图形工具SQL-front时弹出提示:“程序注册时间到期 程序将被限制模式下运行”
- Java中Hashtable和HashMap区别
- Linux下VNC Server的安装配置
- 使用glTexImage2D函数的时候内存飙升
- 如何使用laravel搭建后台登录系统
- PHP实现手机号码归属地查询
- 让产品像LV箱包一样会讲故事,能打动人心
- C#基础 之 using作用
- android使用9patch后,图片没有拉伸,边上出现黑点
- 使用hadoop实现IP个数统计~并将结果写入数据库