Java 集合框架原理分析
文章平均质量分 90
java基础集合框架原理分析,以jdk的util包为基础,深入研究java提供的集合套装
踩踩踩从踩
努力 加油 自律 学习 总结
展开
-
Java 集合深入理解 (十七) :TreeMap源码研究如何达到快速排序和高效查找
前言TreeMap是一个能比较元素大小的Map集合,会对传入的key进行了大小排序。其中,可以使用元素的自然顺序,也可以使用集合中自定义的比较器来进行排序;应用在需要排序的场景;其次说到排序的数据结构,肯定会想到PriorityQueue,也是排序的数据结构,但底层实现是数组,并采用最小顶堆的算法实现的;而我们的treemap则采用散列表的方式进行存储数据,肯定不能采用最小顶堆算法进行实现,具体怎么实现;具体看源码进行分析。原创 2021-06-18 10:51:07 · 660 阅读 · 0 评论 -
Java 集合深入理解 (十六) :LinkedHashMap 实现原理深入 、以及推荐使用建立lru缓存
前言LinkedHashMap 是hashmap和双向链表结合的一种数据结构,用于记录插入顺序,并在迭代器进行取出数据时顺序和插入数据相同;LinkedHashMap可以很好的支持LRU算法原创 2021-06-08 11:39:02 · 602 阅读 · 0 评论 -
Java 集合深入理解 (十五) :HashSet实现原理研究
前言set集合:具体体现在不可重复的性质,该集合的特点在于:不会存储重复的元素,存储无序(存入和取出的顺序不一定相同)元素hashset:是set的经典实现类,底层利用散列表的key值不能重复而实现,hashset具有下面的特性可以存储空的数据jdk1.8后是创建一个记录主存储顺序的LinkedHashMap该集合是不同步的原创 2021-06-06 13:09:39 · 235 阅读 · 2 评论 -
Java 集合深入理解 (十四) :Hashtable实现原理研究
Java 集合深入理解 (十一) :HashMap之实现原理及hash碰撞前言之前分析的hashmap的实现原理确实在jdk的1.8后经过Doug Lea 大牛的优化,非常适合我们学习优秀算法,以及理解其中的思想;我们继续看一下hashtable,虽然hashtable jdk已经不推荐使用,但是我们看源码,看出早期java实现哈希表的基本思想;包括 实现线程安全的方式,及解决hash碰撞,早期扩容方式,不允许数据为空实现原理HashTable类中,保存实际数据的,是Entry对象原创 2021-06-05 12:20:07 · 2292 阅读 · 0 评论 -
Java 集合深入理解 (十三) :ArrayDeque实现原理研究,及动态扩容、双端队列和单队列和栈比较
前言ArrayDeque双端队列,是jdk推荐用来作栈使用,替代掉stack,底层仍是数组实现,实现是循环数组,这一特性区别开vector和linkedlist 因此被推荐原创 2021-06-03 23:10:17 · 1064 阅读 · 0 评论 -
Java 集合深入理解 (十二) :HashMap之扩容 数据迁移
这篇文章进一步hashmap解析 扩容 删除的原理分析原创 2021-05-30 13:59:59 · 2275 阅读 · 0 评论 -
Java 集合深入理解 (十一) :HashMap之实现原理及hash碰撞
哈希表(hashMap)又叫散列表 - 是一种非常重要的数据结构基于map接口实现 - 应用场景及其丰富,本地临时缓存,许多缓存技术(比如memcached) - 核心其实就是在内存中维护一张大的哈希表 - 本文会对java集合框架中HashMap的实现原理进行讲解,从而达到深入理解哈希表原创 2021-05-29 16:05:39 · 1488 阅读 · 1 评论 -
Java 集合深入理解 (十) :集合框架体系图
本篇将集合中四大实现体系图展示,为研究源码有个大体的流程理念c原创 2021-05-24 11:26:31 · 396 阅读 · 0 评论 -
Java 集合深入理解 (九) :优先队列(PriorityQueue)之源码解读,及最小顶堆实现研究
前言queue :一个队列就是一个先入先出(FIFO)的数据结构Queue接口 也是继承自AbstractCollection 标志者,实现queue接口的,它也是一个集合, 并在集合基础增加一些队列自带的方法PriorityQueue 就是队列queue的一种实现,PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。这种实现:它的出队顺序与元素的优先级有关,对PriorityQueue调用remove()或poll()方法,返回的总是优先级最高的元素。而对于什么是优先级最高的原创 2021-05-21 17:00:42 · 735 阅读 · 2 评论 -
Java 集合深入理解 (七) :AbstractCollection类
**前言** AbstractCollection 简单实现了Collection接口 (集合)方法,里面利用了很多抽象方法,简单的实现了基本操作。原创 2021-05-20 16:07:36 · 193 阅读 · 0 评论 -
Java 集合深入理解 (八) :Collection接口和list接口对比
前言 List接口是继承自Collection接口,在collection接口上做一些扩展,相对于一些基本操作增加了一些包括视图,位置查询等操作原创 2021-05-20 09:51:01 · 521 阅读 · 0 评论 -
Java 集合深入理解 (六) :AbstractList类
**前言**AbstractList 此类提供 List 接口的骨干实现,从而最大限度地减少了实现由“随机访问”数据存储(如数组)支持的接口所需的工作。对于连续的访问数据(如链表),应优先使用AbstractSequentialList,而非此类, 可以了解该类也是很有必要的原创 2021-05-19 22:57:11 · 302 阅读 · 0 评论 -
Java 集合深入理解 (五) :stack源码分析,及如何利用vector实现栈
stack 是继承自Vector 的,那就说明 stack是基于vector做的实现;从stack 从1.0被开发出来,可能为了快速的推出一些基本的数据结构操作,所以推出了一些比较粗糙的类。比如,Vector、Stack、Hashtable等。这些类中的一些方法加上了 synchronized 关键字,容易给一些初级程序员在使用上造成一些误解!而且在之前的几个版本中,性能还不怎么好,但从学数据结构的角度,还是值得我们去了解它原创 2021-05-18 22:34:47 · 316 阅读 · 0 评论 -
Java 集合深入理解 (四) :线程安全的数组集合(Vector)
Vector的字面意思是矢量; 向量;可以用来代替数组,主要不同是vector的长度可以自动增长,那既然是这样,和arraylist有什么区别,主要区别还是在 该应用是java的应用是安全指针! 并是java集合框架在现在已经在官方文档并不推荐使用了,和arraylist一样同样维护一个数组, 但通过加synchronized来保证线程安全,看起来源码和arraylist基本相同,还是有研究的价值原创 2021-05-15 12:24:13 · 2782 阅读 · 2 评论 -
Java 集合深入理解 (三) :java.util 包的集合中 快速失败机制( fail-fast )
快速失败机制是java集合中用来保证遍历过程中数据安全的机制 总的来说就是对比expectedModCount = modCount 判断数据操作,它并不判断数据是否有冲突的操作,而是看遍历时操作是否正确,依此达到数据安全。原创 2021-05-15 11:37:55 · 241 阅读 · 0 评论 -
Java 集合深入理解 (二) :LinkedList链表源码研究,及双向队列如何实现
LinkedList是java集合框架很常用数据结构;在开发中运用也很多,经常对比也是和arrayList进行对比。 ArrayList 是以数组实现的,遍历时很快,但是插入、删除时都需要移动后面的元素; LinkedList 则是以链表实现的,插入、删除时只需要改变前后两个节点指针指向即可,省事不少。原创 2021-05-04 17:20:54 · 346 阅读 · 0 评论 -
Java 集合深入理解 (一):ArrayList源码解析,及动态扩容机制
- ArrayList是java集合框架很常用数据结构; - 实现list接口,继承 AbstractList ,基于数组实现容量大小动态变化 - 支持指针快速访问、浅拷贝 - 允许 null 元素的存在 - 实现RandomAccess、Cloneable、Serializable 接口 ,arraylist是支持可序列化的。原创 2021-05-04 11:31:44 · 398 阅读 · 0 评论