博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
容器 - 常用Map之间区别
阅读量:6831 次
发布时间:2019-06-26

本文共 918 字,大约阅读时间需要 3 分钟。

hot3.png

HashMap

1.继承自AbstractMap,基于hash算法

2.支持null键和null值
3.线程不安全
4.无序

Hashtable

1.继承自 Dictionary(这个类已经过时),基于hash算法

2.在遇到null时,会抛出NullPointerException异常
3.线程安全(使用synchronized实现)
4.HashTable已经被淘汰了,不要在代码中再使用它

TreeMap

1.TreeMap并不是基于hash实现的;基于红黑树实现(实现NavigableMap接口)

2.TreeMap没有调优选项,因为红黑树总处于平衡状态。
3.适用于按自然顺序或自定义顺序遍历键(key)
4.在遇到null时,会抛出NullPointerException异常
5.非线程安全
6.HashMap通常比TreeMap快一点(树和哈希表的数据结构使然),建议多使用HashMap,在需要排序的Map时候才用TreeMap.
7.HashMap:适用于在Map中插入、删除和定位元素; Treemap:适用于按自然顺序或自定义顺序遍历键(key)。
参考自:https://blog.csdn.net/xlgen157387/article/details/47907721

LinkedHashMap

1.继承自 HashMap,基于

2.支持null键和null值
3.线程不安全
4.保持进入的顺序与被取出的顺序一致(LinkedHashMap内部维持了一个双向链表,可以保持顺序)

ConcurrentHashMap

1.继承自AbstractMap,基于hash算法

2.不支持null键和null值
3.线程安全(实现ConcurrentMap接口)
4.无序

ConcurrentSkipListMap

1.继承自AbstractMap,基于hash算法

2.不支持null键和null值
3.线程安全(实现ConcurrentNavigableMap接口)
4.有序(底层是通过跳表来实现)

转载于:https://my.oschina.net/mengzhang6/blog/1786778

你可能感兴趣的文章
java关键字--this
查看>>
codewars065 - Backwards Read Primes
查看>>
为什么调用 FragmentPagerAdapter.notifyDataSetChanged...
查看>>
class文件加密,class文件数据库加载
查看>>
Kubernetes 集群安装
查看>>
apache server
查看>>
forward与sendRedirect
查看>>
spring管理serlvet
查看>>
SDL_AudioSpec结构体分析
查看>>
Maven工程发布tomcat无lib包问题
查看>>
使用Scrapy来爬取自己的CSDN文章 (2)
查看>>
同时查看集群中多台机器日志的简单的shell脚本
查看>>
GemFire核心功能介绍
查看>>
ZUUL源码分析 <一
查看>>
Spring 启动记录(11)
查看>>
SphereView for tag cloud
查看>>
Autoconf和Automake,自动生成Makefile
查看>>
开源 免费 java CMS - FreeCMS1.2-功能说明-系统配置
查看>>
利用Javascript通过WMI取得Windows系统信息
查看>>
上传OpenCart代码到服务器的FTP工具FileZilla使用教程
查看>>