
Java集合
文章平均质量分 96
集合
Yaml墨韵
热爱编程、熟悉全栈开发,商务合作或者有开发需求可加文章底部vx,期待与大家共同进
展开
-
Java集合框架高频面试问题精粹(下篇)
为了让HashMap存取高效并减少碰撞,我们需要确保数据尽量均匀分布。哈希值在 Java 中通常使用int表示,其范围是前后加起来大概 40 亿的映射空间,只要哈希函数映射得比较均匀松散,一般应用是很难出现碰撞的。但是,问题是一个 40 亿长度的数组,内存是放不下的。所以,这个散列值是不能直接拿来用的。用之前还要先做对数组的长度取模运算,得到的余数才能用来要存放的位置也就是对应的数组下标。这个算法应该如何设计呢?我们首先可能会想到采用 % 取余的操作来实现。但是,重点来了:“原创 2024-11-15 11:23:53 · 1275 阅读 · 0 评论 -
Java 集合常见面试题全解(上):助你轻松应对面试
先来看一下Collection接口下面的集合。ListArrayListObject[]数组。深度解析 ArrayList。VectorObject[]数组。LinkedList:双向链表(JDK1.6 之前为循环链表,JDK1.7 取消了循环)。LinkedList 源码深度分析与应用指南。SetHashSet(无序,唯一): 基于HashMap实现的,底层采用HashMap来保存元素。是HashSet的子类,并且其内部是通过来实现的。TreeSet(有序,唯一): 红黑树(自平衡的排序二叉树)。原创 2024-11-13 11:21:33 · 1354 阅读 · 0 评论 -
开发者必备:LinkedList 源码深度分析与应用指南
LinkedList是一个基于双向链表实现的集合类,经常被拿来和ArrayList做比较。关于LinkedList和ArrayList的详细对比,我们Java 集合常见面试题总结(上)有详细介绍到。双向链表另外,不要下意识地认为LinkedList作为链表就最适合元素增删的场景。我在上面也说了,LinkedList仅仅在头尾插入或者删除元素的时候时间复杂度近似 O(1),其他情况增删元素的平均时间复杂度都是 O(n)。原创 2024-11-13 11:14:58 · 1116 阅读 · 0 评论 -
深度解析 ArrayList:揭开源码背后的设计与实现原理
ArrayList的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。ArrayList继承于,实现了ListCloneable这些接口。List表明它是一个列表,支持添加、删除、查找等操作,并且可以通过下标进行访问。这是一个标志接口,表明实现这个接口的List集合是支持快速随机访问的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。原创 2024-11-13 10:54:33 · 1121 阅读 · 0 评论