博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hashmap和hashtable
阅读量:6463 次
发布时间:2019-06-23

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

1,hashtree的底层是红黑树,实现是键值对的排序,key必须实现Comparable接口(比如String就实现了)

2,hashmap用要利用hashcode和equal两个函数,Object已经实现,可以重写(比如string),先用hashcode找到哈希表的哈希桶,如果hash值相同,再用equal函数比较

3,hashmap可以运行键有一个null

4,hashmap的node容量为16,每一个hash桶容量为8,满了8就由链表优化成树,时间复杂度由,log(n)-》log(1),自动扩容因子为0.75

5,hashmap在并发下同时插入一个hashcode相同的值,或者扩容时候,后面的操作会覆盖前面的操作

6,hashtable在put,get方法加了锁了

7,

ConcurrentHashMap

ConcurrentHashMap引入segment的概念。Segment在实现上继承了ReentrantLock。

Java8中摒弃了segment了,使用CAS的算法。

SynchronizedMap

Collections.getSynchronizedMap()返回一个SynchronizedMap()对象,使用synchronized关键字来保证对Map的操作是多线程安全的。

效率

ConcurrentHashMap > (SynchronizedMap or HashTable)

入门:https://www.cnblogs.com/lchzls/p/6714689.html

全面:https://yemengying.com/2016/05/07/threadsafe-hashmap/

转载于:https://www.cnblogs.com/vhyc/p/9222393.html

你可能感兴趣的文章
利用Windows自带的Certutil查看文件MD5
查看>>
通过原生js添加div和css
查看>>
简单的导出表格和将表格下载到桌面上。
查看>>
《ArcGIS Engine+C#实例开发教程》第一讲桌面GIS应用程序框架的建立
查看>>
查询指定名称的文件
查看>>
Python 嵌套列表解析
查看>>
[GXOI/GZOI2019]旧词——树链剖分+线段树
查看>>
anroid 广播
查看>>
AJAX POST&跨域 解决方案 - CORS
查看>>
开篇,博客的申请理由
查看>>
Servlet 技术全总结 (已完成,不定期增加内容)
查看>>
[JSOI2008]星球大战starwar BZOJ1015
查看>>
centos 7 部署LDAP服务
查看>>
揭秘马云帝国内幕:马云的野心有多大
查看>>
iOS项目分层
查看>>
一个action读取另一个action里的session
查看>>
IntelliJ IDEA 注册码
查看>>
String字符串的截取
查看>>
DynamoDB Local for Desktop Development
查看>>
用javascript验证哥德巴赫猜想
查看>>