文档章节

HashMap和Hashtable的区别

xpttxsok
 xpttxsok
发布于 2016/07/14 20:37
字数 276
阅读 26
收藏 1
HashTable是一个过时的集合类,在java4中呗重写了,实现了Map接口,所以也成了集合的一部分
     HashTable和HashMap的主要区别是线程安全和性,同步,以及速度
      
     1.HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行
     2.HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable
       Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。
     3.由于Hashtable是线程安全的也是synchronized,所以在单线程环境下它比HashMap要慢。
     4.HashMap不能保证随着时间的推移Map中的元素次序是不变的。
    
     注意:
         1. sychronized意味着在一次仅有一个线程能够更改Hashtable。就是说任何线程要更新Hashtable时要首先获得同步锁,
          其它线程要等到同步锁被释放之后才能再次获得同步锁更新Hashtable。
         
         2. HashMap可以通过下面的语句进行同步:
         Map m = Collections.synchronizeMap(hashMap);

 

© 著作权归作者所有

共有 人打赏支持
上一篇: git
下一篇: 项目
xpttxsok
粉丝 7
博文 177
码字总数 105473
作品 0
徐汇
程序员
私信 提问

暂无文章

运维日志维护工具

1. 系统状态查看 1.1 w命令 [fangfc@node10011 ~]$ w 21:18:24 up 54 min, 1 user, load average: 0.00, 0.01, 0.04USER TTY FROM LOGIN@ IDLE JCPU PCPU W......

Fc丶
9分钟前
0
0
babel6升级到7,jest-babel报错:Requires Babel "^7.0.0-0", but was loaded with "6.26.3".

自从将前端环境更新到babel7,jest-babel之前是基于babel6的,执行时候就会报:Requires Babel "^7.0.0-0", but was loaded with "6.26.3". 很烦,因为连续帮好几台电脑修复这个问题,所以记...

曾建凯
今天
1
0
探索802.11ax

802.11ax承诺在真实条件下改善峰值性能和最差情况。 如何改善今天的Wi-Fi? 在决定如何改进当前版本以外的Wi-Fi时,802.11ac,IEEE和Wi-Fi联盟调查了Wi-Fi部署和行为,以确定更广泛使用的障碍...

linuxprobe16
今天
2
0
使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
今天
4
0
深入理解Plasma(四):Plasma Cash

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 深入理解Plasma(1):...

HiBlock
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部