
容器
卧虫呀
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap实现原理
map是大家日常coding最常用的容器之一,但是大家熟知的hashMap是线程不安全,所以在多线程情况下,需要一个安全的并发容器,大家首选的肯定是ConcurrentHashMap,但是他的原理到底是怎么实现的,下面简单看一下源码,因为jdk1.7和1.8的实现不一样,所以分开分析1. ConcurrentHashMap 1.71. 存储结构Java 7 中 ConcurrentHashMap 的存储结构如上图,ConcurrnetHashMap 由很多个 Segment 组合,而每一个原创 2020-06-29 14:28:39 · 2621 阅读 · 0 评论 -
HashMap浅谈
HashMap 简介HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树),以减少搜索时间,具体可以参考原创 2020-06-27 22:46:59 · 153 阅读 · 0 评论 -
ArrayList和LinkedList的区别
ArrayList和LinkedList的大致区别如下:ArrayList是实现了基于动态数组的数据结构,LinkedList是基于链表结构。 对于随机访问的get和set方法,ArrayList要优于LinkedList,因为LinkedList要移动指针。 对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。因为数组在存储数据时是按顺序存储的,存储数据的内存也是连续的,所以他的特点就是寻址读取数据比较容易,插入和删除比较困难。举个例子:一个原创 2020-06-27 22:00:07 · 229 阅读 · 0 评论