![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
数据结构
HandKnock
读书-手敲-思考-总结-细节-深入-查漏补缺
展开
-
TreeMap
总结TreeMap存储K-V键值对,通过红黑树(R-B tree)实现;TreeMap继承了NavigableMap接口,NavigableMap接口继承了SortedMap接口,可支持一系列的导航定位以及导航操作的方法,当然只是提供了接口,需要TreeMap自己去实现;TreeMap实现了Cloneable接口,可被克隆,实现了Serializable接口,可序列化;TreeMap因为是通过红黑树实现,红黑树结构天然支持排序,默认情况下通过Key值的自然顺序进行排序TreeMap中的元素默认按照原创 2020-12-30 16:16:15 · 68 阅读 · 0 评论 -
Arrays+Collections
Arrayssort/DualPivotQuicksort.sortparallelSortmergeSortswapparallelPrefixbinarySearchequalshashCodefillcopyOfcopyOfRangesetAllstreamArrayListCollections内部sort的原理TimSortlist,set,map区别是否有序是否元素重复原创 2020-12-30 14:45:14 · 60 阅读 · 0 评论 -
CopyOnWriteArrayList
CopyOnWrite容器是一种读写分离的思想,读和写不同的容器copyOnWriteArrayListlist集合,内部采用数组来存储;写时复制,并加锁;直接读数据;总结读数据时不加锁,这时读的数据是可读最新数据;这时可能是读资源时未写回不会发生数据错误问题写时加锁+volatile保证,写时数据顺序执行,也即保证了同步对位置等判断,加锁后需要重新判断;这再写低并发时,提高了性能采用equal方法判断相等copyOnWriteArraySetCopyOnWriteArraySet内部代原创 2020-11-09 15:49:37 · 64 阅读 · 0 评论 -
HashMap
HashMap实现原理,如何计算key的index,存储方式HashMap的内部可以看做数组+链表的复合结构。数组被分为一个个的桶(bucket)。哈希值决定了键值对在数组中的寻址。具有相同哈希值的键值对会组成链表。需要注意的是当链表长度超过阈值(默认是8)的时候会触发树化,链表会变成树形结构。把握HashMap的原理需要关注4个方法:hash、put、get、resize。hash方法。 将 key 的 hashCode 值的高位数据移位到低位进行异或运算。这么做的原因是有些 key 的 hash原创 2020-11-02 13:44:53 · 68 阅读 · 0 评论 -
ArrayMap和SparseArray
为了更加有效的利用内存,Android对HashMap做了优化后推出的新的容器类https://blog.csdn.net/hq942845204/article/details/81293480ArrayMap存放key-value键值对,key可以是多种类型实现原理存储结构,两个数组存储,一个存key的hash,一个存key和valuemHashes[],递增有序数组mArray[],一个key对象mArray里面2个位置,保持key和valueArrayMap优点:数组缓存设计,内存原创 2020-11-01 18:49:56 · 311 阅读 · 0 评论 -
Arraylist和LinkedList
LinkedList集合底层实现的数据结构为双向链表集合中元素允许为 null允许存入重复的数据中元素存放顺序为存入顺序。是非线程安全的,如果想保证线程安全的前提下操作可以使用 List list = Collections.synchronizedList(new LinkedList(…)) 来生成一个线程安全的LinkedListArrayListArrayList就是数组列表,主要用来装载数据,当我们装载的是基本类型的数据int,long,boolean,short,byte…原创 2020-11-01 18:48:52 · 90 阅读 · 0 评论 -
二叉树
二叉树一颗树至少会有一个节点每个节点不能多于2个叶子节点的定义:一个数据,两个指针递归二叉查找树根节点的值大于其左子树中任意一个节点的值,小于其右节点中任意一节点的值查一个值的方式正是二分查找的思想,查找所需的最大次数等同于二叉查找树的高度二叉查找树的缺陷?插入76543,查找的性能大打折扣,几乎变成了线性。如何解决二叉查找树多次插入新节点而导致的不平衡呢?我们的主角红黑树应运而生了平衡二叉树它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉原创 2020-11-01 18:47:54 · 168 阅读 · 0 评论 -
八大数据结构
数组数组是由相同类型的数据按顺序组成的一种引用数据类型”按顺序组成“的理解:在连续的内存地址上排列数组是一种有序可重复的数据结构数组在内存中被分配以连续的内存空间进行存储优点按照索引查询元素速度快按照索引遍历数组方便缺点数组的大小固定后,扩容、删除、添加操作,要创建新数组或移动元素,效率低数组只能存储一种类型的数据适用场景频繁查询,对存储空间要求不大很少增加和删除的情况链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的原创 2020-11-01 18:47:01 · 140 阅读 · 0 评论 -
LindedHashMap
## LinkedHashMapLinkedHashMap继承于HashMap当put元素时,不但要把它加入到HashMap中去,还要加入到双向链表中,所以可以看出LinkedHashMap就是HashMap+双向链表,下面用图来表示逐步往LinkedHashMap中添加数据的过程,红色部分是双向链表,黑色部分是HashMap结构,header是一个Entry类型的双向链表表头,本身不存储数据remove,重新add,或重排序LinkedHashMap存储数据是有序的,而且分为两种:插入原创 2020-10-18 12:57:00 · 122 阅读 · 0 评论 -
BlockingQueue
BlockingQueue深入解析-BlockingQueue看这一篇就够了https://www.cnblogs.com/WangHaiMing/p/8798709.html[**BlockingQueue深入解析-BlockingQueue看这一篇就够了**](https://www.cnblogs.com/WangHaiMing/p/8798709.html)https://www.cnblogs.com/WangHaiMing/p/8798709.htmlView渲染流程htt.原创 2020-10-17 18:13:42 · 138 阅读 · 0 评论