
Java基础
文章平均质量分 89
AllenC6
来战
展开
-
LinkedHashMap源码解析
从继承关系上,我们看到LinkedHashMap继承了HashMap,它里面的增删改差遍历的逻辑都是使用的HashMap中的,但是LinkedHashMap比HashMap多了一个双向链,这个双向链是从第一个插入的元素开始按照插入顺序,连接起来,所以可以说LinkedHashMap是可以保证插入顺序的。看图:这里就简单的给大家看一下这个链是啥样的,不画红黑树了1).是在创建新节点的时候,把双向链连接起来,注意有两种节点一个是TreeNode一个普通Node源码:代码太简单了,这里简单描述一下,就是添加原创 2022-06-17 18:51:16 · 582 阅读 · 0 评论 -
HashMap源码解析
一、HashMap用到的数据结构哈希表、数组、链表、红黑树数组、链表这里不再讲了1.哈希表(1).哈希表定义:哈希表又叫散列表,是一种根据设定的映射函数f(key)将一组关键字映射到一个有限且连续的地址区间上,并以关键字在地址区间中的“像”作为元素在表中的存储位置的一种数据结构。这个映射过程称为哈希造表或者散列,这个映射函数f(key)即为哈希函数也叫散列函数,通过哈希函数得到的存储位置称为哈希地址或散列地址(2).哈希冲突定义:对于不同的关键字,可能得到同一个哈希地址,即key原创 2022-02-28 19:24:31 · 626 阅读 · 0 评论 -
Java接口回调的本质
本质是JVM指令invokevirtual它涉及到了多态的特性,使用 virtual dispatch 做方法调用virtual dispatch 机制会首先从 receiver(被调用方法的对象的实际类型)的类的实现中查找对应的方法,如果没找到,则去父类查找,直到找到函数并实现调用,而不是依赖于引用的类型。如果不清楚JVM的可以看我这篇文章:对Java字节码文件到JVM运行的一个认识_Allence的博客-CSDN博客推荐书籍:java虚拟机规范 这本书告诉我们: JVM是一种规范深入理解ja原创 2022-02-10 11:54:45 · 560 阅读 · 0 评论 -
Vector和Stack详解
Vector底层实现、数据结构和ArrayList一样都是对数组的操作,只不过Vector的方法经过synchronized修饰是同步的所以Vector是线程安全的,还有扩容的时候如果不指定扩容大小会默认扩容为原来的2倍,ArrayList是1.5倍。Stack是继承Vector,所以底层数据结构也是数组,只不过Stack它是按照栈的逻辑结构实现的,比如push方法在末尾压入一个元素和pop方法就是弹出最后一个元素,search方法也是从后往前查找,这些都是因为栈的特性是后入先出,有一点要注意Sta..原创 2022-01-27 17:29:22 · 2031 阅读 · 0 评论 -
LinkedList详解
java集合总结:ArrayList详解_Allence的博客-CSDN博客一、介绍ArrayList是以什么数据结构实现的ArrayList底层的数据结构是顺序表。顺序表:物理内存上连续、逻辑上连续、大小可以动态扩展顺序表是由数组实现的,说道这里就理一下数组、链表、顺序表之间的关系。逻辑结构:结构定义中是对操作对像的数学描述,描述的是数据元素之间的逻辑关系。例如,线性结构,树形结构,图状结构或网状结构。它们都属于逻辑结构。物理结构:又称存储结构,是数据结构在计算机中的表示(又称映像)。例如,数组,指针原创 2022-01-21 19:28:45 · 1300 阅读 · 0 评论 -
ArrayList详解
一、介绍ArrayList是以什么数据结构实现的ArrayList底层的数据结构是顺序表。顺序表:物理内存上连续、逻辑上连续、大小可以动态扩展顺序表是由数组实现的,说道这里就理一下数组、链表、顺序表之间的关系。逻辑结构:结构定义中是对操作对像的数学描述,描述的是数据元素之间的逻辑关系。例如,线性结构,树形结构,图状结构或网状结构。它们都属于逻辑结构。物理结构:又称存储结构,是数据结构在计算机中的表示(又称映像)。例如,数组,指针。线性表:属于逻辑结构中的线性结构,它包括顺序表和链表。原创 2022-01-16 23:50:38 · 5330 阅读 · 0 评论 -
Java集合概览、实现细节、数据结构
1.ArrayList2.LinkedList3.Stack 和 Vector4.hashMap、LinkedHashMap原创 2022-01-14 15:29:33 · 212 阅读 · 0 评论