JAVA集合
文章平均质量分 80
耍宝捡漏
这个作者很懒,什么都没留下…
展开
-
HashMap底层原理
1.HashMap底层实现分JDK1.7和JDK1.8来答在JDK1.7时,HashMap的底层数据结构是 数组+链表在JDK1.8时,HashMap的底层数据结构是 数组+链表+红黑树JDK1.8中HashMap的put()和get()操作的过程put操作:①首先判断数组是否为空,如果数组为空则进行第一次扩容(resize)②根据key计算hash值并与上数组的长度-1(int index = key.hashCode()&(length-1))得到键值对在数组中的索引。③如果该位原创 2022-04-25 23:18:40 · 476 阅读 · 0 评论 -
ArrayList
1.1. Arraylist 和 Vector 的区别?1、ArrayList 是 List 的主要实现类,底层使用 Object[ ]存储,适用于频繁的查找工作,线程不安全 ;2、Vector 是 List 的古老实现类,底层使用 Object[ ]存储,线程安全的。1.2. Arraylist 与 LinkedList 区别?1、是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;2、底层数据结构: Arraylist 底层使用的是 Objec原创 2022-04-26 17:25:22 · 863 阅读 · 0 评论 -
ConcurrentHashMap
1.ConcurrentHashMap底层实现1.1 JDK1.7底层数据结构:Segments数组+HashEntry数组+链表,采用分段锁保证安全性一个ConcurrentHashMap中有一个Segments数组,一个Segments中存储一个HashEntry数组,每个HashEntry是一个链表结构的元素。segment继承自ReentrantLock锁。首先将数据分为一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一段数据时,其他段的数据也能被其他线程访问,实现了真原创 2022-04-27 20:51:57 · 2441 阅读 · 0 评论 -
Arraylist 与 LinkedList 区别
1、是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;2、底层数据结构: Arraylist 底层使用的是 Object 数组;LinkedList 底层使用的是 双向链表 数据结构(JDK1.6 之前为循环链表,JDK1.7 取消了循环。注意双向链表和双向循环链表的区别,下面有介绍到!)3、插入和删除是否受元素位置的影响:ArrayList 采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。 比如:执行add(E e)方法的时候, Ar原创 2022-04-27 16:33:47 · 67 阅读 · 0 评论