摘要:
一、在Collection集合体系中的位置及概述 LinkedHashSet 是非同步的有序的,分别是插入顺序和访问顺序,LinkedHashSet的有序性可参考LinkedHashMap的有序性,继承于HashSet,内部基于LinkedHashMap实现的,也就是说LinkedHashSet和H 阅读全文
摘要:
一、在Collection集合体系中的位置及概述 HashSet继承自AbstractSet抽象类,实现了Cloneable、Serializable接口,显示的实现了Set接口。至于为什么显示的实现Set接口,我前面的文章讲过。 HashSet而言,它是基于HashMap实现的,本质上讲HashS 阅读全文
摘要:
一、在Map集合家族的位置及概述 TreeMap是一个有序的key-value集合,它内部是通过红-黑树实现的。TreeMap继承与AbstractMap,实现了NavigableMap接口,意味着它支持一系列的导航方法,比如返回有序的key集合。它还实现了Cloneable接口,意味着它能被克隆。 阅读全文
摘要:
问题场景 在看TreeMap类是如何删除红黑树时,从remove方法看起,当看到deleteEntry(Entry<K,V> p)方法时: 就是图中标红的三行代码: p.key = s.key; p.value = s.value; p = s; 将后继节点的键赋值给待删除节点的键、将后继节点的值赋 阅读全文
摘要:
一、在Map集合家族的位置及描述 LinkedHashMap是HashMap的子类,底层数据结构是链表和哈希表并且线程不安全,链表保证了遍历的有序性(元素插入的顺序)、哈希表保证了键的唯一性。实现了Map接口,内部还维护了一个双向链表,在每次插入数据,或者访问、修改数据时,会增加节点、或调整链表的节 阅读全文
摘要:
一、概述 红黑树是一种自平衡树在计算机科学中。二叉树的每个节点都有一个额外的位,该位通常被解释为节点的颜色(红色或黑色)。这些颜色位用于确保树在插入和删除期间保持近似平衡。通过以满足某些属性的方式用两种颜色之一绘制树的每个节点来保留平衡,这些属性共同限制树在最坏情况下的不平衡程度。修改树时,随后重新 阅读全文
摘要:
一、AVL树定义 在数据结构中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度差的绝对值不能超过一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次旋转来使得AVL树保持平衡。 二、AVL树的特性 1.任意 阅读全文
摘要:
一、概述 在看JDK源码时,看到关于map相关的,看到HashMap时,一部分源码与红黑树有关。索性就将树这种数据结构从头学一遍,记录下来,给自己还有他人留个参考和学习的资料。 涉及到使用二叉树进行排序、查找节点值、前序遍历、中序遍历、后续遍历(它们的递归实现和非递归实现)、删除节点、查找最大节点、 阅读全文
摘要:
一、在Map集合家族的位置及描述 HashMap子类继承自AbstractMap抽象类,实现了Map,Serializable,Cloneable接口,AbstractMap实现了Map接口的一部分方法,减轻了其子类的负担。 概括的说,HashMap底层存储元素的数据结构是散列(hash)也称为哈希 阅读全文
摘要:
位运算符 运算符 运算 范例 << 左移 3 << 2 = 12 --> 3*2*2=12 >> 右移 3 >> 1 = 1 --> 3/2=1 >>> 无符号右移 3 >>> 1 = 1 --> 3/2=1 & 与运算 6 & 3 = 2 | 或运算 6 | 3 = 7 ^ 异或运算 6 ^ 3 阅读全文