
数据结构
文章平均质量分 91
Java道哥
汲取 传承 打造开源影响力
展开
-
BlockingQueue(阻塞队列)分析
如果读者还有一点印象,我们在实现线程池时,用了队列这种数据结构来存储接收到的任务,在多线程环境中阻塞队列是一种非常有用的队列,在介绍BlockingQueue之前,我们先解释一下Queue接口。Queue接口 boolean offer(E e); 将指定的元素插入此队列,当使用有容量限制的队列时,此方法通常要优于add(E),果该元素已添加到此队列,则返回true;否则返回false E peek(); 获取但不移除此队列的头元素;如果此队列为空,则返回 null。 E poll(); 获取并转载 2022-11-22 10:47:32 · 314 阅读 · 0 评论 -
【有料】什么是B-树、B树、B+树、B*树?
前面讲的几种树,结点都只能存一个元素,因此,当元素非常多的时候,要么结点的度非常大,要么树的深度非常大,这两种情况都会导致对硬盘的访问次数偏大。首先,B-tree树即B树。B即Balanced平衡,因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,这是个非常不好的直译,很容易让人产生误解,人们可能会以为B-树和B树是两种树。因为B树是存储在磁盘中的,如下图的B树,假设每个结点都存储在磁盘的不同页中(一般在设计的时候,会将B树的阶与磁盘页的大小相匹配,目的是为了减少跨页访问)。转载 2022-09-27 17:11:16 · 262 阅读 · 0 评论 -
平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了
二分法是我们常用的一种查找算法,可以有效的提升数据找找的效率,其实现思路是:1、首先对数据集进行排序。2、找到数据集中间位置的节点。3、用查找的条件和间节点进行比较,等于则直接返回,中间节点数据小于查找条件则说明数据在排序列表的左边,大于则说明数据在排序列表的右边。比如我们要从[9,2,6,5,7,8,4,3,1] 快速查找到 7的数据那么我们做以下操作从二分法查找的过程来看,如果能保证数据的有序性,并且预先把数据进行分段存储好数据的中间节点,那么查找的时候就会很简单,所以如果要使用二分法,我们通常都会在数转载 2022-06-04 23:56:47 · 138 阅读 · 0 评论 -
【有料】HashMap源码解读——逐句分析resize方法的实现
一、前言 最近在阅读HashMap的源码,已经将代码基本过了一遍,对它的实现已经有了一个较为全面的认识。今天就来分享一下HashMap中比较重要的一个方法——resize方法。我将对resize方法的源代码进行逐句的分析。 若想要看懂这个方法的源代码,首先得对HashMap的底层结构和实现有一个清晰的认识,若不清楚的,可以看看我之前写的一篇博客,这篇博客对HashMap的底层结构和实现进行了一个比较清晰和全面的讲解,同时博客的最底下附上了两篇阿里架构师对HashMap的分析,写的非常好,很有参考转载 2022-05-18 13:05:34 · 462 阅读 · 1 评论 -
Java集合类: Set、List、Map、Queue使用场景梳理
本文主要关注Java编程中涉及到的各种集合类,以及它们的使用场景相关学习资料http://files.cnblogs.com/LittleHann/java%E9%9B%86%E5%90%88%E6%8E%92%E5%BA%8F%E5%8F%8Ajava%E9%9B%86%E5%90%88%E7%B1%BB%E8%AF%A6%E8%A7%A3%28collection%E3%80%81list%E3%80%81map%E3%80%81set%29.rarhttp://blog.sina.c.转载 2020-11-15 23:43:46 · 136 阅读 · 0 评论 -
Java String replace() 方法
replace() 方法通过用 newChar 字符替换字符串中出现的所有 searchChar 字符,并返回替换后的新字符串。语法public String replace(char searchChar, char newChar) 参数 searchChar-- 原字符。 newChar-- 新字符。 返回值替换后生成的新字符串。实例以下实例对字符串Runoob 中的字符进行替换:实例publicclassMain{ pu...转载 2020-10-29 19:31:10 · 971 阅读 · 0 评论 -
java中Arrays.sort()的几种用法
Java的Arrays类中有一个sort()方法,该方法是Arrays类的静态方法,在需要对数组进行排序时,非常的好用。但是sort()的参数有好几种,下面我就为大家一一介绍,这几种形式的用法。======================================================1、Arrays.sort(int[] a)这种形式是对一个数组的所有元素进行排序,并且是按从小到大的顺序。举例如下(点“+”可查看代码): 1 import java..原创 2020-10-29 19:23:19 · 2051 阅读 · 1 评论 -
PriorityQueue
Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度,将让读者建立对PriorityQueue建立清晰而深入的认识。总体介绍前面以JavaArrayDeque为例讲解了Stack和Queue,其实还有一种特殊的队列叫做PriorityQueue,即优先队列。优先队列的作用是能保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最小元素,C++.转载 2020-10-29 10:25:57 · 182 阅读 · 0 评论