
Java进阶
jeanboydev
Android | iOS | Web 开发者,专注移动开发领域,热爱分享,热爱开源。
展开
-
一篇文章看明白 HashMap 工作原理
HashMap 源码分析 简介 HashMap 是 Java 语言中常用的用于存放键值对数据类型的集合类。随着 JDK(Java Developmet Kit)版本的更新,JDK 1.8 对 HashMap 底层的实现进行了优化,底层实现也由之前的 数组 + 链表 改为 数组 + 链表 + 红黑树 。HashMap 的常用方法如下: //创建一个 map Map<String, String...原创 2019-01-14 10:46:51 · 2251 阅读 · 1 评论 -
原来 ArrayList 内部原理这么简单
简介 ArrayList 是一种变长的基于数组实现的集合类,ArrayList 允许空值和重复元素,当往 ArrayList 中添加的元素数量大于其底层数组容量时,它会自动扩容至一个更大的数组。 另外,由于 ArrayList 底层基于数组实现,所以其可以保证在 O(1) 复杂度下完成随机查找操作。其他方面,ArrayList 是非线程安全类,并发环境下,多个线程同时操作 ArrayList,会引...原创 2019-03-13 19:34:08 · 1581 阅读 · 2 评论 -
LinkedList 源码分析
简介 LinkedList 是 Java 集合框架中一个常用的集合类,底层采用双向链表结构。和 ArrayList 一样,LinkedList 也支持空值和重复值。 由于 LinkedList 基于链表实现,存储元素过程中,无需像 ArrayList 那样进行扩容。但有得必有失,LinkedList 存储元素的节点需要额外的空间存储前驱和后继的引用。另一方面,LinkedList 在链表头部和尾部...原创 2019-06-25 14:04:31 · 1404 阅读 · 0 评论 -
TreeMap 源码分析(上)
简介 TreeMap 最早出现在 JDK 1.2 中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于 红黑树 实现,可保证在 log(n) 时间复杂度内完成 containsKey、get、put 和 remove 操作,效率很高。另一方面,由于 TreeMap 基于红黑树实现,这为 TreeMap 保持键的有序性打下了基础。 总的来说,TreeMap 的核心是红黑树,其很多...原创 2019-08-07 08:39:09 · 631 阅读 · 0 评论 -
TreeMap 源码分析(下)
引言 通过上一篇TreeMap 源码分析(上)的分析,我们已经了解了红黑树插入数据的操作,本文我们继续来分析红黑树删除数据的操作。 红黑树的删除 将红黑树内的某一个节点删除。需要执行的操作依次是:首先,将红黑树当作一颗二叉查找树,将该节点从二叉查找树中删除;然后,通过「旋转和重新着色」等一系列来修正该树,使之重新成为一棵红黑树。详细描述如下: 第一步:删除节点 将红黑树当作一颗二叉查找树,将节点删...原创 2019-08-17 15:43:25 · 495 阅读 · 0 评论