随笔分类 -  JDK 常用集合源码

JDK 常用集合源码分析
摘要:Set 接口是 Java Collections Framework 中的一员,它的特点是: 不能包含重复的元素 ,允许且最多只有一个 null 元素。Java 中有三个常用的 Set 实现类: HashSet: 将元素存储在 哈希表 中,性能最佳,但不能保证元素的迭代顺序 LinkedHashSe 阅读全文
posted @ 2019-07-31 09:35 小创 阅读(906) 评论(0) 推荐(2)
摘要:Java 中的 Map 是一种键值对 映射 ,又被称为 符号表 或 字典 的数据结构,通常使用 哈希表 来实现,但也可使用 二叉查找树 、 红黑树 实现。 HashMap 基于 哈希表 ,但迭代时不是插入顺序 LinkedHashMap 扩展了 HashMap,维护了一个贯穿所有元素的 双向链表 , 阅读全文
posted @ 2019-07-26 09:42 小创 阅读(1846) 评论(0) 推荐(1)
摘要:HashMap 有一个不足之处就是在 迭代 元素时与 插入顺序不一致 。而大多数人都喜欢按顺序做某些事情,所以,LinkedHashMap 就是针对这一点对 HashMap 进行扩展,主要新增了 「两种迭代方式」 : 按插入顺序 保证迭代元素的顺序与插入顺序一致 按访问顺序 一种特殊的迭代顺序,从最 阅读全文
posted @ 2019-06-10 09:46 小创 阅读(1759) 评论(0) 推荐(0)
摘要:HashMap 可以说是使用频率最高的处理键值映射的数据结构,它不保证插入顺序,允许插入 null 的键和值。本文采用 JDK8 中的源码,深入分析 HashMap 的原理、实现和优化。首发于微信公众号 顿悟源码 . 1. 基本结构 HashMap 基于散列表实现,使用 拉链法 处理碰撞,在 JDK 阅读全文
posted @ 2019-05-22 18:10 小创 阅读(6212) 评论(4) 推荐(1)
摘要:List 表示的就是线性表,是具有相同特性的数据元素的有限序列。它主要有两种存储结构,顺序存储和链式存储,分别对应着 ArrayList 和 LinkedList 的实现,接下来以 jdk7 代码为例,对这两种实现的核心源码进行分析。 1. ArrayList 源码分析 ArrayList 是基于 阅读全文
posted @ 2019-04-24 13:34 小创 阅读(1391) 评论(1) 推荐(0)
摘要:输入输出是操作系统不可或缺的一部分,大致分为两类:面向磁盘和面向网络。在 Java 中有3种 I/O 类型:BIO、NIO 和 AIO,分别是同步阻塞、同步非阻塞和异步非阻塞 I/O,这里着重描述 BIO 和 NIO 的区别和常用的编程模型。 1. 为什么设计 NIO 一个直接原因就是为了更好的利用 阅读全文
posted @ 2019-04-18 07:37 小创 阅读(856) 评论(0) 推荐(0)
摘要:Doug Lea 在 Scalable IO in Java 的 PPT 中描述了 Reactor 编程模型的思想,大部分 NIO 框架和一些中间件的 NIO 编程都与它一样或是它的变体。本文结合 PPT 按照自己的理解整理而来,最终编写了一个简单的 NIO 回显服务。 Reactor 之所以高效是 阅读全文
posted @ 2019-04-17 18:30 小创 阅读(1984) 评论(0) 推荐(0)