本文转载自微信公众号「程序员漫画编程」,作者程序职场 。转载本文请联系程序员漫画编程公众号。
01概念
HashMap
HashMap实现了Map接口,继承AbstractMap,它是基于哈希表的 Map 接口的实现。
HashMap是引用数据类型。
Hashtable
Hashtable:是Map接口的另外一个实现类,和HashMap用法类似,同时也有区别。
treeMap
TreeMap:基于红黑树(Red-Black tree)的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparator进行排序,具体取决于使用的构造方法。
02区别
1. HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要手动同步HashMap这个区别就像Vector和ArrayList一样。
2. HashTable不允许null值,key和value都不可以,HashMap允许null值,key和value都可以。
3. HashTable有一个contains(Object value)功能和containsValue(Object value)功能一样。
4. HashTable使用Enumeration,HashMap使用Iterator。
5. HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。
6. 哈希值的使用不同,HashTable直接使用对象的hashCode。
7,这三个都对Map接口进行了实现
03安全性
1.HashMap是不安全的线程,他允许Key值出现一次null Value值出现无数次的Null
2.Hashtable是安全的线程,他不仅实现了Map接口也实现了Dictionary接口,他的key值与Value值都不允许出现Null
3.treeMap 非线程安全 可以进行排序的,默认按照键的自然顺序进行升序排序,若要进行降序排序则需要在构造集合时候传递一个比较器。
04关系图
05实例应用
- class HashMaps
- {
- public static void main(String[] args)
- {
- Map map=new HashMap();
- map.put(“a”, “aaa”);
- map.put(“b”, “bbb”);
- map.put(“c”, “ccc”);
- map.put(“d”, “ddd”);
- Iterator iterator = map.keySet().iterator();
- while (iterator.hasNext()) {
- Object key = iterator.next();
- System.out.println(“map.get(key) is :”+map.get(key));
- }
- Hashtable tab=new Hashtable();
- tab.put(“a”, “aaa”);
- tab.put(“b”, “bbb”);
- tab.put(“c”, “ccc”);
- tab.put(“d”, “ddd”);
- Iterator iterator_1 = tab.keySet().iterator();
- while (iterator_1.hasNext()) {
- Object key = iterator_1.next();
- System.out.println(“tab.get(key) is :”+tab.get(key));
- }
- TreeMap tmp=new TreeMap();
- tmp.put(“a”, “aaa”);
- tmp.put(“b”, “bbb”);
- tmp.put(“c”, “ccc”);
- tmp.put(“d”, “ddd”);
- Iterator iterator_2 = tmp.keySet().iterator();
- while (iterator_2.hasNext()) {
- Object key = iterator_2.next();
- System.out.println(“tmp.get(key) is :”+tmp.get(key));
- }
- }
- }
前提条件 请您在购买前确保已完成注册和充值。详细操作请参见 如何注册公有云管...
信息化2.0时代提出开展智慧教育创新发展行动。2019年2月,中共中央、国务院印发...
建站 什么 虚拟主机 够用?这要看搭建的是什么类型的网站。比如个人博客类型的网...
在Python语言中有如下3种方法: 成员方法 类方法(classmethod) 静态方法(staticm...
2021年3月24日,主题为《数据的世界,世界的数据》的星环科技2021春季新品发布会...
Docker生成新镜像版本的两种方式 There are two ways Docker can generate new m...
摘要 元旦期间 订单业务线 告知 推送系统 无法正常收发消息,作为推送系统维护者...
本文整理自直播《Hologres 数据导入/导出实践-王华峰(继儒)》 视频链接: https:/...
从 10.0.0 版开始,异步迭代器就出现在 Node 中了,在本文中,我们将讨论异步迭...
【51CTO.com快译】 数据可视化工具不断发展,提供更强大的功能,同时改善可访问...