HashMap、HashTable有哪些区别

来源:互联网 发布:linux创建多层目录 编辑:程序博客网 时间:2024/05/23 23:48

hashMap是HashTable的轻量级实现,它们都实现了Map接口,HashTable是线程安全的,其中的大部分方法是同步的,hashMap本身不支持线程的同步,它不是线程安全的,所以在多线程环境下,如果使用hashMap的话,要提供同步操作,正因为HashTable自身就提供了同步操作,所以效率方面HashTable要低于hashMap。

使用上,hashMap允许Entry对象的key值有一个是空的,并且value值也可以为空,但是hashTable不允许Entry的key值和value值为空,传入空值的话,会抛出空指针异常。

Hash值的使用不同,HashTable直接使用对象的hashCode作为hash值,但是hashMap把对象的hashCode输入hash算法,由hash算法得到hash值。创建容器时,hashMap中entry[]数组默认容量是16,并且entry[]数组中的元素总量大于阈值的时候,

数组会扩充为现在数组大小的两倍,HashTable中hash数组默认大小是11,它们的负载因子默认都是0.75。

参考链接:

http://blog.csdn.net/java2000_net/article/details/2512510

http://www.cnblogs.com/devinzhang/archive/2012/01/13/2321481.html


0 0
原创粉丝点击