HashMap 、HashTable、TreeMap、WeakHashMap的区别是什么
2024-08-24 02:26:56
Java为数据结构中的映射定义了一个接口java.util.Map,它有4个实现类:HashTable、HashMap、TreeMap、WeakHashMap。
HashMap和HashTable的区别:
1)HashMap是JDK1.2引进的一个Map接口的实现,HashTable实现Map接口的同时也继承了抽象类Dictionary。
2)HashMap不是线程安全的,HashTable是线程安全的;就效率而言,HashMap可能高于HashTable。
3)HashMap允许空键值(即null做为key),但是HashTable不允许空键值。
4)HashMap去掉了HashTable的contains(),改成了containsValue()和containsKey()方法。
5)HashMap使用Iterator遍历元素,HashTable使用Enumeration
6)HashMap的hash数组默认大小是16,而且一定是2的指数,HashTable的默认hash数组大小是11,增加方式是old×2+1
7)HashMap和HashTable的hash值使用不同
HashMap和TreeMap的区别:
1)HashMap里面存入的键值对在取出时没有固定顺序,是随机的,而TreeMap由于实现了SortMap接口,能够把它保存的记录根据键值排序,因此取出来的是排序后的键值对。
2)HashMap有一个子类LinkedHashMap,可以实现输出顺序与输入顺序相同
HashMap和WeakHashMap的区别:
HashMap中的key采用的是“强引用方式”,当HashMap中的Key没有被外部引用时,只有在这个key从HashMap中删除后,才可以被垃圾回收器回收。
WeakHashMap中可以采用的是“弱引用方式”,只要WeakHashMap中的key不再被外部引用,它就可以被垃圾回收器回收。
最新文章
- 在你的ASP.NET MVC中使用查找功能
- J2EE学习(2)--何謂容器【良葛格学习笔记搬】
- 让Windows 7内置Administrator 用户也能使用指纹登录
- php远程图片抓取存放到本地路径并生成缩略图
- phpstorm安装,破解及使用
- Thu夏令营 总结
- 深入探究VC —— 资源编译器rc.exe(3)
- 配置rhel 6.4(64位)安装使用syslog-ng 3.5
- OPENCV3——从入门到出门
- angularJs-route路由详解
- STM32 - GPIO
- PHP中利用DOM和simplxml读取xml文档
- 美团java后台实习三面
- 剑指offer--矩阵中的路径
- C# 远程获取图片二进制
- hadoop from rookie to ninja - 1. Basic Architecture(基础架构)
- css/html/Javascript/getUrlCode/各种前端小点汇总集合
- 组播协议——IGMP v2报文头介绍
- GPU下train 模型出现nan
- Android——用Activity和Service实现简单的音乐播放器