文档章节

HashMap和Hashtable的区别

xpttxsok
 xpttxsok
发布于 2016/07/14 20:37
字数 276
阅读 25
收藏 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);

 

© 著作权归作者所有

共有 人打赏支持
xpttxsok
粉丝 5
博文 176
码字总数 105161
作品 0
徐汇
程序员

暂无文章

白话SpringCloud | 第五章:服务容错保护(Hystrix)

前言 前一章节,我们知道了如何利用RestTemplate+Ribbon和Feign的方式进行服务的调用。在微服务架构中,一个服务可能会调用很多的其他微服务应用,虽然做了多集群部署,但可能还会存在诸如网...

oKong
29分钟前
0
0
【解惑】领略Java内部类的“内部”

内部类有两种情况: (1) 在类中定义一个类(私有内部类,静态内部类) (2) 在方法中定义一个类(局部内部类,匿名内部类) 1、私有内部类 —— 在方法之间定义的内部类,非静态 我们首先看看类中...

偶尔诗文
今天
1
0
sqlserver 2008 r2 直接下载地址(百度云)

之前下载的sqlserver2008发现不能附加,就卸载了,重新找到了sqlserver2008R2的百度云资源 卸载sqlserver2008还是有点麻烦,不过就是需要删除注册表中的信息 自己来回卸载了3次终于重装sqlse...

dillonxiao
今天
1
0
[Java]JVM调优总结 -Xms -Xmx -Xmn -Xss

JVM调优总结 -Xms -Xmx -Xmn -Xss 博客分类: Java General JVM应用服务器电信CMS算法 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可...

morpheusWB
今天
2
0
C++ std::function 和 std::bind

C++11提供了std::function和std::bind两个工具,用于引用可调用对象。这些可调用对象包括 普通函数,Lambda表达式,类的静态成员函数,非静态成员函数以及仿函数等。引用可调用对象,可以用于...

yepanl
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部