hashMap和hashTable的区别
每日总结,每天进步一点点
hashMap和hashTable的区别
1.父类:hashMap=》AbstractMap
hashTable=》Dictionary
2.性能:hashMap:线程不安全,非同步,效率高
hashTable:线程安全,同步,效率低
3.存储特性:hashMap:key可以有一个为null,值可以有多个为空
hashTable:key和value都不能为null
补充知识WeakHashMap,IdentityHashMap,EnumMap
WeakHashMap:
在说这个类之前,首先普及一下java的引用类型
java中引用类型分为四种:
1.强引用:引用指向对象,垃圾回收器(gc)不会进行回收
2.软引用:运时可能被回收(jvm内存不足)
3.弱引用:运行时一定被回收
4.虚引用:类似于无引用,主要用于跟踪对象的回收状态
接下来咱们继续看WeakHashMap这个类
WeakHashMap这个类的key键值为弱引用,垃圾回收器运行时将被回收,主要用于大量数据在使用结束之后需要及时进行内存回收处理
事例代码:
WeakHashMap< String, String> weakMap = new WeakHashMap<String, String>();
weakMap.put(new String("a1"), "abc");
weakMap.put(new String("a2"), "def");
weakMap.put("a3", "ghi");
//垃圾回收器运行
System.gc();
System.runFinalization();
//输出集合的长度
System.out.println(weakMap.size());
运行结果为:1
前两条数据已经被回收,最后一条为强类型,不会进行回收
IdentityHashMap
这个类的key值存放的是对象的引用,不是对象的值
事例代码:
IdentityHashMap<String, String> map = new IdentityHashMap<String, String>();
map.put("a1", "aaa");
map.put(new String("a1"), "bbb");
map.put(new String("a1"), "ccc"); System.out.println(map.size());
运行结果:3,此时的三条数据的key值是不重复的
EnumMap
EnumMap:这个类的key值是一个枚举类型
事例代码:
EnumMap<demo, String> enum1 = new EnumMap<demo, String>(demo.class);
enum1.put(demo.a1, "a1");
enum1.put(demo.a2,"a2");
System.out.println(enum1.size());
for (Map.Entry<demo, String> map1 : enum1.entrySet()) {
System.out.println(map1.getKey()+" " + map1.getValue());
}
//创建一个枚举类型
enum demo{
a1,a2,a3,a4;
}
总结:
以上所有的类都是Map接口下的实现类,都是键值对结构的集合,他们的存放数据和获取数据的方法都是一样的,在这里不做详细的介绍,
希望以上总结对大家有帮助,如果喜欢就支持一下吧,如果有错误请大神赐教。
hashMap和hashTable的区别的更多相关文章
- java面试题——HashMap和Hashtable 的区别
一.HashMap 和Hashtable 的区别 我们先看2个类的定义 public class Hashtable extends Dictionary implements Map, Clonea ...
- Map集合及与Collection的区别、HashMap和HashTable的区别、Collections、
特点:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值. Map集合和Collection集合的区别 Map集合:成对出现 (情侣) ...
- java分享第七天-01(Hashmap和Hashtable的区别&Property)
一.Hashmap和Hashtable的区别 1 主要:Hashtable线程安全,同步,效率相对低下 HashMap线程不安全,非同步,效率相对高 2 父类:Hashtable是Dictionary ...
- HashMap和Hashtable的区别 源码分析
一:以前只知道HashMap和HashTable区别,死记硬背的记住HashMap 允许key value为空 而Hashtable 不允许为空 HashMap线程是非线程安全的,而Hashtable ...
- Java 集合系列 11 hashmap 和 hashtable 的区别
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- HashMap与HashTable的区别、HashMap与HashSet的关系
http://blog.csdn.net/wl_ldy/article/details/5941770 HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是 ...
- 面试题·HashMap和Hashtable的区别(转载再整理)
原文链接: Javarevisited 翻译: ImportNew.com- 唐小娟 译文链接: http://www.importnew.com/7010.html HashMap和Hashtabl ...
- java中的hashmap与hashtable的区别
HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别.主要的区别有:线程安全性,同步(synchronizatio ...
- HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别
面试题: 1.HashMap和Hashtable的区别? HashMap:线程不安全,效率高,键和值都允许null值 Hashtable:线程安全,效率低,键和值都不允许null值 ArrayList ...
随机推荐
- WPF学习系列 简单的窗体设置
今天要学习的源码是一个窗体设置.效果如下,可拖拽.这让我想起了vs的启动界面 下面是源码的情况 项目结构: 窗体代码: cs代码 1.新建项目 略 2.设置窗体 AllowsTransparency= ...
- Java防止SQL注入2(通过filter过滤器功能进行拦截)
首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦 ...
- oracleXE(oracle学习版)在windows的安装配置
oracleXE其实安装基本就是一路下一步. 在安装前记得先把tomcat打开,不然oracleXE会占用8080端口且安装过程无法更改端口. 如果需要远程连接此oracle XE的话,要关闭这台电脑 ...
- 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(四)
SpringSecurity(1) 其实啊,这部分我是最不想写的,因为最麻烦的也是这部分,真的是非常非常的麻烦.关于SpringSecurity的配置,让我折腾了好半天,网上的配置方式一大把,但总有一 ...
- python_射门小游戏
import random def shoot(fs = 0,i = 0,j = 0): while i < 5: print("<<<<<<< ...
- web页面之响应式布局
一.什么是响应式布局? 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本.这个概念是为解决移动互联网 ...
- OncrickListener的实现
在Java中实现的监控事件的方法 button.addActionListener(new ActionListener() { @Override public void actionPerform ...
- 如何获得Webapp的根项目路径 即ServletContext.getRealPath() 的输入参数要以"/"开头
ServletContext.getRealPath() 的输入参数要以"/"开头 2014-03-26 15:54 5738人阅读 评论(1) 收藏 举报 版权声明:本文为博主原 ...
- Java基础——继承、接口
一个对象变量(例如,变量e)可以引用多种实际类型的现象被称为多态(polymorphism). 在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic binding). 在Java程序 ...
- eclipse SVN Android项目出错,程序老闪退
百度得知是.so文件被SVN客户端默认为是链接后的文件,认为是不提交的.因此需要将.so文件手动添加到版本控制.