JAVA基础
文章平均质量分 76
针对JAVA小白,不定期发布不同系列的文章,每个系列由浅入深的介绍某一个知识点,每个系列都会尽量用代码实践并得出结论
潇湘Victor.
电子科技大学在读研究生一枚,立志从事JAVA后端开发。
关注我,带你不断巩固JAVA基础!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
String(三)之intern()方法详讲
intern()方法是String类中一个非常有用的方法,通过将字符串添加到字符串常量池中,可以实现字符串的共享,从而减少内存占用和提高性能。然而,在使用时需要注意其适用场景和潜在的风险。希望本文能够帮助读者更好地理解和使用intern()方法。原创 2025-04-12 09:19:14 · 444 阅读 · 0 评论 -
String(二)之数据结构探讨
String:不可变,适合存储常量或不需要频繁修改的字符串。:可变,性能高,适合单线程环境。:可变,线程安全,适合多线程环境。在实际开发中,应根据具体需求选择合适的字符串类。原创 2025-04-12 09:09:16 · 815 阅读 · 0 评论 -
String(一)之基础
String是Java中非常重要的类,其不可变性和丰富的操作方法使其成为处理文本数据的首选。在面试中,String的相关知识点经常被考察,尤其是其不可变性、字符串常量池以及与其他字符串操作类的区别。掌握这些内容对于Java开发者至关重要。原创 2025-04-12 08:59:55 · 377 阅读 · 0 评论 -
HashMap数据结构深挖(六)之查找,删除和遍历详讲
本文详细介绍了HashMap的查找、删除和遍历操作,并通过实践验证了不同遍历方式的性能差异。希望这些内容对您有所帮助!原创 2025-04-11 09:26:28 · 417 阅读 · 0 评论 -
HashMap数据结构深挖(五)之数据插入详讲
HashMap的数据插入过程涉及哈希值的扰动、数组扩容、哈希冲突处理等多个步骤。通过扰动哈希值减少冲突,通过链表和红黑树处理冲突,最终保证HashMap的高效性。原创 2025-04-11 09:03:24 · 701 阅读 · 0 评论 -
HashMap数据结构深挖(四)之扩容元素拆分
本文详细介绍了HashMap在JDK8中的扩容机制,重点讲解了元素拆分的实现原理,并通过代码示例验证了其行为。理解HashMap的扩容机制对于优化程序性能和避免哈希冲突具有重要意义。原创 2025-04-10 09:52:25 · 438 阅读 · 0 评论 -
HashMap数据结构深挖(三)之扰动函数和负载因子
负载因子是HashMap中用于衡量哈希表空间利用率的参数。它表示哈希表中已存储的键值对数量与哈希表容量的比值。扰动函数:通过位运算增加哈希码的随机性,减少哈希冲突。负载因子:控制HashMap的扩容行为,默认值为0.75,是空间和时间成本的权衡结果。通过深入理解扰动函数和负载因子的原理,可以更好地优化HashMap的性能。原创 2025-04-10 09:39:56 · 540 阅读 · 0 评论 -
HashMap数据结构深挖(二)之初始化容量
HashMap的初始化容量计算是一个典型的位操作应用,通过方法可以高效地计算出最小的2的幂次方的值。这种设计不仅保证了哈希表的性能,还充分利用了位操作的高效性。理解这一过程对于深入掌握HashMap的实现原理至关重要。原创 2025-04-10 09:22:29 · 500 阅读 · 0 评论 -
HashMap数据结构深挖(一)之基本使用
HashMap是Java中非常常用的数据结构,适用于快速查找和插入的场景。本文介绍了HashMap的基本使用、常见开发场景以及部分源码分析。后续文章将继续深入探讨HashMap的内部实现原理和性能优化。原创 2025-04-10 08:42:13 · 352 阅读 · 0 评论 -
ArrayDeque数据结构深挖(四)之与ArrayList,LinkedList的对比
ArrayDeque是基于数组实现的双端队列,支持高效的头尾插入和删除操作。它是线程不安全的,但在单线程环境下性能优于LinkedList。本文详细对比了ArrayDequeArrayList和LinkedList在头部、尾部和中间插入数据以及数据获取速度上的性能差异,并通过实践代码验证了理论分析。根据不同的需求,选择合适的数据结构可以显著提升程序性能。原创 2025-04-09 10:03:48 · 1289 阅读 · 0 评论 -
ArrayDeque数据结构深挖(三)之数据插入源码解读
在分析源码之前,先了解ArrayDequeelements:存储队列元素的数组。head:指向队列头部的索引。tail:指向队列尾部的索引。:队列的最小初始容量,默认为8。本文详细解析了ArrayDeque的数据插入过程,包括addFirstaddLast和方法的源码实现。通过逐行注释,读者可以深入理解ArrayDeque的动态扩容机制和环形数组的实现原理。掌握这些内容有助于在实际开发中更高效地使用ArrayDeque。原创 2025-04-09 09:43:06 · 388 阅读 · 0 评论 -
ArrayDeque数据结构深挖(二)之ArrayDeque初始化源码解读
ArrayDeque是基于数组实现的双端队列,支持在队列的两端高效地插入和删除元素。其内部使用循环数组来存储元素,因此具有较高的性能。容量分配ArrayDeque的容量始终为2的幂次方,这是为了优化索引计算。默认容量:如果未指定容量,默认初始容量为16。动态扩容:当队列满时,ArrayDeque会自动扩容,扩容后的容量为原来的2倍。原创 2025-04-09 09:30:07 · 272 阅读 · 0 评论 -
ArrayDeque数据结构深挖(一)之初识ArrayDeque
ArrayDeque是一个高效的双端队列实现,适用于需要频繁在队列两端操作元素的场景。它既可以用作栈,也可以用作队列,并且在大多数情况下比LinkedList和Stack更高效。注意ArrayDeque不是线程安全的,如果需要在多线程环境中使用,建议使用或外部同步。原创 2025-04-09 08:44:59 · 904 阅读 · 0 评论 -
LinkedList数据结构深挖(七)之栈的实现
/ 使用LinkedList作为底层数据结构 // 构造函数,初始化栈// 压栈操作// 将元素添加到链表头部(栈顶)// 弹栈操作// 栈为空时抛出异常// 移除并返回链表头部元素(栈顶)// 查看栈顶元素// 栈为空时抛出异常// 返回链表头部元素(栈顶)// 判断栈是否为空// 判断链表是否为空// 返回栈的大小// 返回链表的大小} }通过LinkedList实现栈是一种高效且简单的方式,充分利用了LinkedList的双向链表特性。原创 2025-04-08 10:26:01 · 236 阅读 · 0 评论 -
LinkedList数据结构深挖(六)之ConcurrentLinkedDeque基本使用
是Java提供的一个线程安全的双端队列(Deque)实现。它基于链表结构,支持高效的并发操作,适用于多线程环境下的数据共享。与类似,也是非阻塞的,但其支持从队列的两端进行插入和删除操作。是Java并发编程中一个非常实用的数据结构,特别适合需要高效并发操作的双端队列场景。通过本文的介绍,希望读者能够掌握其基本使用方法和适用场景,从而在实际开发中灵活运用。扩展阅读Java并发编程实战Java官方文档 - ConcurrentLinkedDeque。原创 2025-04-08 09:52:16 · 542 阅读 · 0 评论 -
LinkedList数据结构深挖(五)之多线程运行时存在的问题
LinkedList在多线程环境下存在数据不一致和链表结构破坏的问题,这些问题源于其非线程安全的实现。通过同步机制、线程安全集合或并发集合,可以有效解决这些问题。在实际开发中,应根据具体需求选择合适的线程安全方案。原创 2025-04-08 09:38:33 · 547 阅读 · 0 评论 -
LinkedList数据结构深挖(四)之数据删除和遍历
本文详细介绍了LinkedList的数据删除操作及其源码实现,并重点探讨了各种遍历方法的性能差异。通过实践比较,我们发现迭代器、增强for循环和forEach方法是遍历LinkedList的高效方式,而普通for循环由于索引访问的性能问题,不推荐使用。原创 2025-04-08 09:20:19 · 448 阅读 · 0 评论 -
LinkedList数据结构深挖(三)之数据插入源码解读
LinkedList的插入操作非常灵活,头部和尾部插入的时间复杂度为O(1),而中间插入的时间复杂度为O(n)。通过源码分析,我们可以更深入地理解其实现原理。原创 2025-04-08 08:42:47 · 388 阅读 · 0 评论 -
LinkedList数据结构深挖(二)之与ArrayList对比
LinkedList和ArrayList各有优劣,选择哪种数据结构取决于具体的应用场景。理解它们的底层实现和性能特点,可以帮助我们在开发中做出更合理的选择。原创 2025-04-08 08:13:40 · 1131 阅读 · 0 评论 -
LinkedList数据结构深挖(一)之数据结构及其常见用法
LinkedList适合频繁插入和删除的场景,但不适合频繁随机访问的场景。在实际开发中,应根据具体需求选择合适的数据结构。原创 2025-04-08 08:07:43 · 298 阅读 · 0 评论 -
ArrayList数据结构深挖(五)之CopyOnWriteArrayList
是Java并发包()中的一个线程安全的List实现。它的核心思想是“写时复制”(Copy-On-Write),即在修改操作(如添加、删除、修改元素)时,会先复制一份底层数组的副本,然后在副本上进行修改,最后将副本替换回原数组。这种设计使得读操作可以在不加锁的情况下进行,从而提高了读操作的性能。通过“写时复制”机制和volatile关键字保证了并发安全性,同时无锁读操作提高了读性能。尽管写操作的开销较大,但在读多写少的场景中,它仍然是一个高效的选择。希望本文能帮助你深入理解的设计原理和适用场景!原创 2025-04-07 10:32:16 · 380 阅读 · 0 评论 -
ArrayList数据结构深挖(四)之CopyOnWriteArrayList
是一个适合读多写少场景的线程安全List实现。它的设计思想是通过写时复制来保证线程安全,但频繁的写操作会导致性能下降。在实际开发中,应根据具体需求选择合适的并发容器。原创 2025-04-07 10:23:08 · 191 阅读 · 0 评论 -
ArrayList数据结构深挖(三)之多线程环境下的问题与解决方案
在多线程环境下使用ArrayList时,需要注意其非线程安全的特性。可以通过或显式加锁来避免并发问题。选择哪种方案取决于具体的应用场景和性能需求。原创 2025-04-07 10:09:01 · 482 阅读 · 0 评论 -
ArrayList数据结构深挖(二)之动态扩容机制详解
ArrayList的动态扩容机制是其高效性的关键之一。通过1.5倍的扩容策略,ArrayList在空间和时间效率之间取得了平衡。理解这一机制,有助于我们更好地使用ArrayList,并在实际开发中避免性能问题。原创 2025-04-07 09:37:47 · 251 阅读 · 0 评论 -
ArrayList数据结构深挖(一)
ArrayList是Java中最常用的集合类之一,适合随机访问和尾部插入的场景。如果需要频繁在中间位置插入或删除元素,可以考虑使用LinkedList。在下一篇文章中,我们将深入探讨ArrayList的线程安全问题及其解决方案。原创 2025-04-07 09:29:56 · 345 阅读 · 0 评论
分享