一、组合模式在 JDK 集合的源码分析 1、Java 的集合类 HashMap 就使用了组合模式 2、代码分析 + Debug 源码 1 public class Composite { 2 3 public static void main(String[] args) { 4 5 Map<Int ...
分类:
其他好文 时间:
2021-01-27 14:00:00
阅读次数:
0
1. 简介 HashMap是一个哈希表,线程不安全, 唯一, 可重复,允许 和`value`为null。遍历时是无序的。 底层结构是基于链表散列,也就是数组+链表。数组也被称为哈希桶,桶里面就装着链表,链表中的每个节点,就是哈希表中的每个元素。 在JDK8中,当链表长度达到8的时候,就会转为红黑树。 ...
分类:
编程语言 时间:
2019-11-22 23:47:18
阅读次数:
73
附:更这个系列感觉自己像是又挖了一个坑??,不过趁自己刚好工作不太忙,有空闲期,静下心来研究学习源码也是一件很值得做的事,自己尽量会把这个坑填完??。 [TOC] Java 集合源码分析(一)HashMap 1. 概要 HashMap 作为我们经常使用的 Java 集合工具类,无论是学习研究,帮助自 ...
分类:
编程语言 时间:
2019-08-27 12:25:36
阅读次数:
81
1. Vector简介 Vector实现了可扩展的对象数组List Vector实现了RandomAcess接口,支持索引,支持根据索引快速查找元素。RandomAccess Vector实现了Cloneable接口,可以被克隆Cloneable Vector实现了java.io.Serializa ...
分类:
编程语言 时间:
2019-05-20 18:58:25
阅读次数:
100
当插入元素9时,这时是需要调整的第一种情况,结果 如下: 插入9 红黑树规则4中强调不能有两个相邻的红色结点,所以此时我们需要对其进行调整。调整的原则有多个相关因素,这里的情况是,父结点10是其祖父结点1(父结点的父结点)的右孩子,当前结点9是其父结点10的左孩子,且没有叔叔结点(父结点的兄弟结点) ...
分类:
编程语言 时间:
2019-04-30 12:17:04
阅读次数:
131
1. LinkedList简介 可以看到LinkedList类继承AbstractSequentialList类,实现了List, Deque, Cloneable, java.io.Serializable接口。实现List接口,实现对列表的增删改查操作,并且元素可以为null,实现Deque接口 ...
分类:
编程语言 时间:
2019-04-26 21:17:28
阅读次数:
171
LinkedHashMap 简介 hash表和链表实现了map接口,迭代顺序是可以预测的。LinkedHashMap和HashMap的不同是它所有的entry 维持了一个双向链表结构。该链表定义了通常迭代顺序是键插入的顺序。 LinkedHashMap 定义 public class LinkedH ...
分类:
编程语言 时间:
2019-01-05 16:43:26
阅读次数:
216
一、LinkedList结构 LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的。 LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList 实现 Li ...
分类:
编程语言 时间:
2018-11-24 00:52:37
阅读次数:
331
java分布式 Java高并发 Java高可用 Java高扩展 高并发架构
NIO通讯
spring boot
分类:
编程语言 时间:
2018-11-05 17:33:06
阅读次数:
177
要想知道一个元素是否在数组或链表中,只能从前向后挨个对比,无论是数组还是链表,其对数据的查询表现都比较无力。在的二叉排序树中,还会将数据排序以进行二分查找,将时间复杂度从O(n)降低到O(lg n)。 出现这个问题的根源在于,我们没有办法直接根据一个元素找到它存储的位置。 那有没有办法消除这个对比的 ...
分类:
编程语言 时间:
2018-05-30 21:31:45
阅读次数:
192