Java 集合内容分享
文章平均质量分 73
Java集合是Java编程语言中的一个重要概念,它提供了一种存储和操作对象的方式。Java集合框架包含了多种类型的集合,如Set、List、Queue、Map等,每种类型的集合都有其特定的使用场景和特性。
之乎者也·
机车疾驰在路上,代码飞舞在指尖,热血与逻辑交织,创造属于我的数字世界。
展开
-
JAVA集合面试分享三:HashMap实现原理详解
红黑树的平均查找长度是log(n),如果长度为8,平均查找长度为log(8) = 3,链表的平均查找长度为n/2,当长度为8时,平均查找长虔为8/2 = 4,这才有转换成树的必要;(选择6个而不是8个,是为了避免频繁进行红黑树和链表的转换,造成性能的损耗。HashMap是用链表+红黑树的形式来解决hash冲突的,就是把同一hash值但不相等的数据,归到一个集合内成为哈希桶,内部的元素由链表形式组织起来,hash表中存放链表的头,当链表元素数量达到设置值后就将链表转换成红黑树形式。原创 2023-11-04 17:01:50 · 87 阅读 · 0 评论 -
JAVA集合面试分享四:HashTable实现原理详解
总的来说,HashTable和HashMap在实现原理上有很多相似之处,如底层数据结构、哈希算法等。但HashTable更强调线程安全,而HashMap则更注重性能。原创 2023-11-04 17:11:43 · 128 阅读 · 0 评论 -
JAVA集合面试分享五:TreeMap实现原理详解
的基础是红黑树,这是一种自平衡的二叉查找树。红黑树有五个特性,其中包括每个节点要么是红色,要么是黑色,从根到每个叶子的所有路径包含相同数量的黑色节点等。这些特性确保了红黑树从根到叶子的最长可能路径不会超过最短可能路径的两倍长,因此红黑树是相对平衡的。这是因为在红黑树中,左子节点的值总是小于其父节点,而右子节点的值总是大于其父节点。是基于红黑树的,所以其查找操作的时间复杂度为 O(log n),其中 n 是树中节点的数量。对象都包含一个键,一个值,左子节点,右子节点,父节点,以及颜色信息。原创 2023-11-04 17:20:15 · 66 阅读 · 0 评论 -
JAVA集合面试分享六:LinkedHashMap实现原理详解
先给大家看张图了解一下LinkedHashMap的实现原理是基于HashMap实现的,它在HashMap的基础上维护了一个双向链表。该双向链表保证了LinkedHashMap的迭代顺序。原创 2023-11-04 18:56:41 · 73 阅读 · 0 评论 -
JAVA集合面试分享七:WeakHashMap实现原理详解
键值对的存储与移除。原创 2023-11-04 19:02:10 · 84 阅读 · 0 评论 -
JAVA集合面试分享八:ConcurrentHashMap实现原理详解
1.7用的数组+链表,安全的方式为分段锁1.8用的数组+链表+红黑树,结构和HashMap一致,抛弃了分段锁,采用CAS+自旋以及Synchronized。原创 2023-11-04 19:11:46 · 91 阅读 · 0 评论 -
JAVA集合面试分享九:ConcurrentSkipListMap实现原理详解
结合了跳表的高效查找、插入和删除性能,并通过分段锁的策略实现了高并发。这使得在多线程环境下成为一种高效且线程安全的数据结构;它允许快速查找、插入和删除元素,并且支持多个线程同时访问和修改这个映射。原创 2023-11-04 19:26:08 · 169 阅读 · 0 评论 -
JAVA集合面试分享十四:ArrayLsit与LinkedList区别是什么?
都是Java中的两种常见的List实现,它们用于存储和处理元素的数据结构,但在内部,它们的工作方式有着显著的区别。可能是一个更好的选择。如果你需要在列表的开头或结尾(或者说在任何已知的位置)频繁插入或删除元素,那么。主要取决于你的使用场景。如果你需要频繁访问列表中的元素,那么。以上信息仅供参考,实际选择应依据具体需求和场景进行判断。原创 2023-11-05 15:43:17 · 28 阅读 · 0 评论 -
JAVA集合面试分享十五:HashMap、HashTable、TreeMap、LinkedHashMap之间有什么区别呢?
选择哪个集合类主要取决于你的特定需求。如果你需要集合保持特定的排序,那么。如果你希望保留插入顺序,那么选择。如果你只关心元素的快速查找和唯一性,那么。原创 2023-11-05 16:04:24 · 81 阅读 · 0 评论 -
JAVA集合面试分享十六:HashSet、TreeSet、LinkedHashSet三者有什么区别?
选择哪个集合类主要取决于你的特定需求。如果你需要集合保持特定的排序,那么。如果你希望保留插入顺序,那么选择。如果你只关心元素的快速查找和唯一性,那么。原创 2023-11-05 16:08:32 · 126 阅读 · 0 评论 -
JAVA集合面试分享十七:Queue和Deque有什么区别呢?
总的来说,Queue和Deque都是重要的数据结构,但它们在使用方式和具体应用上有显著的差异。选择哪种数据结构取决于你的具体需求和使用场景。原创 2023-11-05 16:16:07 · 221 阅读 · 0 评论 -
JAVA集合面试分享十三:JAVA集合框架详解-阶段(六)终
先给大家看一张图,有个大致了解:今天说说这几个集合类型的特点:List的实现原理可以基于数组或链表来实现,具体的实现取决于具体的List类型。例如,ArrayList是基于数组实现的,而LinkedList是基于链表实现的。以下是基于数组和链表的List的实现原理的简要概述:List的特点包括:请注意,这些是List接口及其常见实现(如ArrayList和LinkedList)的一般特点和原理。具体的实现细节和特点可能会因不同的编程语言和库而有所不同。Map的实现原理在大多数语言中,如Java,通常是基于*原创 2023-11-05 15:33:34 · 21 阅读 · 0 评论 -
JAVA集合面试分享十二:JAVA集合框架详解之Deque-阶段(五)
先给大家看一张图,有个大致了解:再来看下Deque的继承关系:Deque实现了以下几种:ArrayDeque的实现原理主要基于动态数组。以下是更具体的解释:总的来说,ArrayDeque的实现原理是使用动态数组来存储数据,并优化了插入和删除操作以使其更加高效。它还使用了自动扩容策略来确保空间效率。LinkedBlockingDeque的实现原理是结合链表数据结构和阻塞队列的特性来实现的。以下是其具体的实现原理:总结起来,LinkedBlockingDeque的实现原理是利用链表数据结构来维护队列的元素,并结原创 2023-11-05 15:27:01 · 33 阅读 · 0 评论 -
JAVA集合面试分享十一:JAVA集合框架详解之Queue-阶段(四)
基本上,一个队列就是一个先入先出(FIFO)的数据结构;是一种常见的线性数据结构,在Java中用于存储和操作元素序列。它基于先进先出(First-In-First-Out, FIFO)原则,即最早入队的元素首先出队。只能在队尾添加元素,在队头删除元素。队列是一种简单而常见的数据结构,它基于先进先出原则,并具有限制访问和动态大小等特点。适用于需要按照特定顺序管理和操作元素的场景,如任务调度、消息传递、广度优先搜索等。在选择是否使用队列时,请考虑其特点及限制,并确保正确处理可能发生的异常情况。原创 2023-11-05 15:09:34 · 50 阅读 · 0 评论 -
JAVA集合面试分享十:JAVA集合框架详解之Set-阶段(三)
TreeSet是Java中的一个类,它实现了Set接口,并且是一个有序的,不允许存储重复元素的集合。它的底层实现是红黑树(一种自平衡的二叉查找树),因此,它的元素会自动按升序排列。有序性:TreeSet中的元素会按照自然顺序(升序)排列,或者根据创建TreeSet时提供的Comparator进行排序,具体取决于使用的构造方法。不允许重复元素:TreeSet中不允许存储重复的元素,如果试图添加重复的元素,add方法会返回false,且不会改变集合的状态。原创 2023-11-04 22:44:26 · 25 阅读 · 0 评论 -
JAVA集合面试分享二:JAVA集合框架详解之Map-阶段(二)
先给大家看一张图,有个大致了解:再来看下Map的继承关系:Map实现了以下几种:原理详解请点击此处原理详解请点击此处原理详解请点击此处原理详解请点击此处原理详解请点击此处原理详解请点击此处原理详解请点击此处原创 2023-11-04 16:33:07 · 31 阅读 · 0 评论 -
JAVA集合面试分享一:JAVA集合框架详解之List-阶段(一)
链表(LinkedList)是一种常见的基础数据结构,是一种线性表,但是不会按线性的顺序存储数据,而是在每一个节点里面存储下一节点的地址。链表可以分为单项列表和双向链表,单向链表包含两个值:当前节点的值和下一节点的链接。一个双向链表有三个整数值: 数值、向后的节点链接、向前的节点链接。下图就是介绍单向链表和双向链表。原创 2023-11-04 16:15:21 · 32 阅读 · 0 评论