每日总结,每天进步一点点

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的区别的更多相关文章

  1. java面试题——HashMap和Hashtable 的区别

    一.HashMap 和Hashtable 的区别 我们先看2个类的定义 public class Hashtable extends Dictionary implements Map, Clonea ...

  2. Map集合及与Collection的区别、HashMap和HashTable的区别、Collections、

    特点:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值. Map集合和Collection集合的区别 Map集合:成对出现 (情侣)                       ...

  3. java分享第七天-01(Hashmap和Hashtable的区别&Property)

    一.Hashmap和Hashtable的区别 1 主要:Hashtable线程安全,同步,效率相对低下 HashMap线程不安全,非同步,效率相对高 2 父类:Hashtable是Dictionary ...

  4. HashMap和Hashtable的区别 源码分析

    一:以前只知道HashMap和HashTable区别,死记硬背的记住HashMap 允许key value为空 而Hashtable 不允许为空 HashMap线程是非线程安全的,而Hashtable ...

  5. Java 集合系列 11 hashmap 和 hashtable 的区别

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  6. HashMap与HashTable的区别、HashMap与HashSet的关系

    http://blog.csdn.net/wl_ldy/article/details/5941770 HashTable的应用非常广泛,HashMap是新框架中用来代替HashTable的类,也就是 ...

  7. 面试题·HashMap和Hashtable的区别(转载再整理)

    原文链接: Javarevisited 翻译: ImportNew.com- 唐小娟 译文链接: http://www.importnew.com/7010.html HashMap和Hashtabl ...

  8. java中的hashmap与hashtable的区别

    HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别.主要的区别有:线程安全性,同步(synchronizatio ...

  9. HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别

    面试题: 1.HashMap和Hashtable的区别? HashMap:线程不安全,效率高,键和值都允许null值 Hashtable:线程安全,效率低,键和值都不允许null值 ArrayList ...

随机推荐

  1. nginx代理TCP端口

    1.升级nginx 版本至1.9.0以上 升级流程参考 nginx平滑升级 2.配置编译的时候需要加上 ./configure --prefix=/usr/local/nginx --user=www ...

  2. iOS面试必看

    转载:http://www.jianshu.com/p/5d2163640e26 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了.今年,找过工作人可能会更深刻地体会到今年的就业形 ...

  3. java网络编程精解demo1---读取用户控制台的输入的数据并显示

    package test3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream ...

  4. 深入浅出 Redis client/server交互流程

    综述 最近笔者阅读并研究redis源码,在redis客户端与服务器端交互这个内容点上,需要参考网上一些文章,但是遗憾的是发现大部分文章都断断续续的非系统性的,不能给读者此交互流程的整体把握.所以这里我 ...

  5. 【转】sublime配置默认浏览器+多浏览器快捷键

    配置在Chrome,Firefox中打开 安装 SideBarEnhancements 然后通过ctrl + k, ctrl + b打开侧边栏,在侧边栏的文件中右击,找到 open width -&g ...

  6. SocketServer

    SocketServer是基于socket写成的一个更强大的模块. SocketServer简化了网络服务器的编写.它有4个类:TCPServer,UDPServer,UnixStreamServer ...

  7. redis 在后台启动

    昨天在cmd窗口启动,窗口关闭,再次访问会报错,所以在次打开 首先你要安装服务:redis-server --service-install redis.windows.conf --loglevel ...

  8. web网页中使用vlc插件播放相机rtsp流视频

    可参考: 使用vlc播放器做rtsp服务器 使用vlc播放器播放rtsp视频 使用vlc进行二次开发做自己的播放器 vlc功能还是很强大的,有很多的现成的二次开发接口,不需配置太多即可轻松做客户端播放 ...

  9. 【ASP.NET程序员福利】打造一款人见人爱的ORM(二)

    上一篇我已经给大家介绍AntORM的框架[ASP.NET程序员福利]打造一款人见人爱的ORM(一),今天就来着重介绍一下如何使用这套框架 1>AntORM 所有成员 如果你只想操作一种数据库,可 ...

  10. [Android]学习笔记Activity_001

    操作button的说明 设置button的ID: android:id="@+id/button" 设置button的点击事件 findViewById(R.id.button). ...