![](https://i-blog.csdnimg.cn/direct/f4e1990482ee4f59b3a2119f1897112b.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
构建Java知识体系(集合篇)
文章平均质量分 96
构建自己的Java知识体系
家乡的落日
博观约取,厚积薄发。拒绝浮躁,保持谦逊。
展开
-
Java集合基础知识点系统性总结篇
特性ComparableComparator所在包java.langjava.util比较方法是否需要修改类需要修改比较的类本身不修改比较的类,通常在外部定义适用场景类需要有固定的排序方式时类不修改自身排序逻辑的情况时,使用比较灵活dogs . add(new Dog("四眼" , 4 , "吃馒头喝稀饭"));dogs . add(new Dog("秀逗" , 8 , "吃骨头"));dogs . add(new Dog("大黄" , 5 , "吃烤鸭屁股"));原创 2024-06-03 22:51:17 · 974 阅读 · 0 评论 -
ArrayList详解
基于JDK8。原创 2024-06-05 23:27:24 · 724 阅读 · 0 评论 -
谈谈JDK 漏洞 6260652
在看ArrayList源码的过程中 发现带参构造里有一个注释:于是带着下面三个问题去查资料,探究了一下这个问题。原创 2024-06-05 10:36:57 · 1030 阅读 · 0 评论 -
LinkedList详解(含数据结构动画演示)
/ 获取链表的最后一个节点,赋值给变量 l// 如果链表为空,即最后一个节点为 null,抛出 NoSuchElementException 异常// 调用 unlinkLast 方法,从链表中移除最后一个节点// 确保 l 是最后一个节点且不为 null 的断言,注释掉的是因为在实际代码中没有执行断言检查的需要= null;// 保存最后一个节点的值// 保存最后一个节点的前一个节点// 将最后一个节点的值设为 null,帮助垃圾回收。原创 2024-06-07 14:54:03 · 1102 阅读 · 0 评论 -
CopyOnWriteArrayList详解
我第一次听说这个集合还是看了一个博客 说这个集合叫Cow 奶牛集合。然后就记住了哈哈。。。CopyOnWriteArrayList 是 List 接口的一个线程安全实现,适用于需要保证线程安全频繁读取和偶尔修改的场景。其基本工作原理是,当对列表进行写操作(如添加、删除、更新元素)时,它会创建一个底层数组的副本,然后在新数组上执行写操作。这种“写时复制”的机制确保了在进行写操作时,不会影响正在进行的读操作,从而实现了线程安全。所以"COW" 是 “写时复制”。原创 2024-06-09 21:21:13 · 1169 阅读 · 1 评论 -
Stack详解(含动画演示)
上面我们自己利用Object 数组和Arrays.copyOf方法实现了简单的栈,我们默认设置了10的容量,如果超过10个元素,我们利用Arrays.copyOf完成数组的复制。我们利用Object 数组和Arrays.copyOf方法实现了一个简单的栈,这个栈包含基本的 push、peek、pop、size、isEmpty方法,并模拟出栈顺序重写了 toString。Stack通过操作数组的末尾,比如push只把元素添加到数组的末尾,pop只移除数组末尾的元素。它直接访问 Vector 的最后一个元素。原创 2024-06-12 14:42:21 · 799 阅读 · 0 评论 -
HashMap详解(含动画演示)
/ 加载因子,用于控制哈希表的扩容频率// 默认的加载因子// 哈希表的最大容量 2的30次方 1,073,741,824 10亿多// 扩容阈值,当哈希表中元素个数超过这个值时,会触发扩容/*** 有参构造函数1:只接受初始容量参数* @param initialCapacity 初始容量*/// 调用另一个构造函数,使用默认加载因子/*** 有参构造函数2:接受初始容量和加载因子参数* @param initialCapacity 初始容量。原创 2024-06-15 11:53:54 · 1302 阅读 · 2 评论 -
LinkedHashMap详解
LinkedHashMap 是 HashMap 的子类,与 HashMap 类似,它也基于哈希表来存储键值对。但是,LinkedHashMap 维护了一个双向链表来记录插入顺序或者访问顺序,因此具备一些特有的特性和功能。双向链表在LinkedList详解这篇文章中有介绍。LinkedHashMap 中使用双向链表维护顺序的图示:绿色连线表示 双向链表的 pre和next指针。原创 2024-06-17 11:17:53 · 388 阅读 · 0 评论 -
ConcurrentHashMap详解
ConcurrentHashMap是线程安全的键值对集合。ConcurrentHashMap的设计宗旨是减少锁的竞争,来提高并发性能。ConcurrentHashMap 非常适用于需要高并发读写的场景,下面是几个常见的使用场景:缓存系统:在一个多线程环境中使用缓存时,ConcurrentHashMap 能有效地处理大量的并发读写请求,保证数据的一致性和访问速度。计数器:在高并发的应用中,例如统计网站访问量、计数器等,ConcurrentHashMap 可以高效地更新计数器值。原创 2024-06-19 14:22:48 · 1161 阅读 · 1 评论 -
ArrayDeque详解(含动画演示)
当tail默认是0开始的时候,开始的时候,直接添加元素到数组的第一个位置,然后再计算tail(此时计算的位置是下一次要添加到位列末尾的位置),tail = (0+ 1) & (8 - 1) = 1,也就是第二次要添加到队列末尾的元素放在数组的第二个位置。元素从队尾(rear)加入,从队头(front)移除。开始的时候,先减一,再和数组长度减一求与,这个操作就相当于,head下标和数组长度求余,再往左移动一位。下面这段代码的核心是将现有的元素复制到一个新的更大的数组中,以便有足够的空间添加新的元素。原创 2024-06-20 11:05:18 · 1149 阅读 · 1 评论 -
BlockingQueue详解(含动画演示)
①、在队列为空时,获取元素的操作将会被阻塞,直到队列变为非空。②、在队列已满时,插入元素的操作将会被阻塞,直到队列不再是满的。阻塞队列是线程安全的,且通常用于生产者-消费者模型中。BlockingQueue 提供了四种不同类型的操作方式:抛出异常、特殊值、阻塞和超时。ArrayBlockingQueue 下面会详细讲解。LinkedBlockingQueue 讲解一下底层数据结构和 take、put方法。PriorityBlockingQueue 简单介绍。原创 2024-06-22 10:05:55 · 713 阅读 · 0 评论 -
DelayQueue详解
DelayQueue 也是 Java 并发包()中的一个特殊队列,用于在指定的延迟时间之后处理元素。原创 2024-06-25 11:29:32 · 1239 阅读 · 0 评论 -
PriorityQueue详解(含动画演示)
完全二叉树:强调树的形态,所有节点从左到右依次填满。大顶堆和小顶堆:不仅是完全二叉树,还在此基础上增加了节点值的排序要求,确保堆顶元素是最大值(大顶堆)或最小值(小顶堆)。原创 2024-06-23 19:11:39 · 1039 阅读 · 0 评论 -
ConcurrentLinkedQueue详解(详细图文+动画演示)
ConcurrentLinkedQueue 是 Java 中 java.util.concurrent 包下的一个非阻塞线程安全队列实现。为什么要详细讲这个队列呢?主要还是因为这个队列的高并发,无锁等特性。同时这个队列总结完之后,就开始进入Java并发相关的内容总结了。ConcurrentLinkedQueue 的一些关键特性:①、 非阻塞算法。原创 2024-06-28 12:09:23 · 1532 阅读 · 0 评论