![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java数据结构与算法
文章平均质量分 83
随着计算机科学的不断发展,数据结构与算法成为了计算机科学领域中最为基础、重要的模块。数据结构是一种组织和存储数据的方式,它是解决问题的基础。算法则是计算机科学的核心,它是指在计算机程序中解决问题的方法和技术
汤姆大聪明
这个作者很懒,什么都没留下…
展开
-
Java方法引用
方法引用就是把已经有的方法拿过来用,当做函数式接口中抽象方法的方法体比如在Stram流中我们要利用map将字符串整数转换为int类型,就可以使用方法引用代替实现Function接口。原创 2024-07-05 12:53:53 · 665 阅读 · 0 评论 -
Java数据结构——哈希表
哈希散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。原创 2024-05-06 08:30:13 · 722 阅读 · 0 评论 -
Java基础算法——AVL树
二叉搜索树在插入和删除时,节点可能失衡如果一个节点的左右孩子高度差超过1,则此节点失衡常规情况下,面对平衡的节点我们的查询效率是Olog n,但面对失衡的情况,最坏能达到On。原创 2023-09-22 09:03:27 · 61 阅读 · 0 评论 -
Java面向对象进阶——泛型
当一个类中,某个变量的数据类型不确定时,就可以定义带有泛型的类格式public class 类名<数据类型>{}例如public class ArrayList<E>{}这里的E可以理解为变量,但不是用来记录数据的,而是用来记录类型的,可以是任何字母。原创 2023-08-12 11:17:38 · 174 阅读 · 1 评论 -
Java数据结构--动态数组
其实在很多的时候,静态数组根本不能满足我们编程的实际需要,比如说我需要在程序运行过程中动态的向数组中添加数据,这时我们的静态数组大小是固定的,显然就不能添加数据,要动态添加数据必须要用到动态数组。动态数组也是基于静态数组来实现的,我们可以根据扩容静态数组的大小从而增加动态数组的大小,因此在成员变量中我们包含arr数组,size动态数组大小以及capacity数组容量。思路:创建一个新的数组,将容量已满的数组拷贝到新数组中,再将新数组代替原来的数组。数组的大小,相比与静态数组,空间利用更加合理。原创 2023-04-26 00:26:35 · 4049 阅读 · 0 评论 -
Java数据结构--栈(基于链表+数组)
在实现栈之前,我们要先知道栈怎么进行使用?它有什么方法?这样对于我们初学者来说可以更好的了解栈。下面我们来对Stack类中的方法来运行一下。原创 2023-04-15 16:54:17 · 708 阅读 · 3 评论 -
Java数据结构--队列(基于链表+数组)
我们在实现队列的代码之前,先来了解一下Java API中Queue类的方法摘要,要知道它是如何创建使用的。原创 2023-04-19 22:39:17 · 729 阅读 · 1 评论 -
Java数据结构--单链表
我们在实现单向链表之前,先了解一下Java API中LinkedList类的方法摘要,并学会如何去创建使用链表,熟练运用其中常用的几种方法(增删差)下面为LinkedList类中的所有方法摘要看到这么多方法,是不是头都大了,但不要慌,我们只需熟练掌握其中最常用的几种方法即可,其余的只需了解。下面我们来运行一下其中最常用的几种方法(我们要实现的也是以下主要方法)addFirst(元素) 将指定元素添加到链表开头add(元素)将指定元素添加到链表结尾。原创 2023-04-21 23:37:40 · 1302 阅读 · 0 评论 -
Java数据结构--双向链表
在上一篇中我们学习了单向链表的实现,链表中我们除了单向链表还有双向链表,在这一篇我们将更进一步地了解链表,实现双向链表。原创 2023-04-23 16:09:47 · 1640 阅读 · 1 评论 -
Java数据结构--双端队列
思路:首先获取尾部节点的前一个节点( sentinel. pre.pre)以及哨兵节点( sentinel),最后更新相应指针即可思路:直接返回队尾元素( sentinel.pre.val)思路:向左移动tail指针,将tail位置的空间置空思路:直接返回tail位置元素。原创 2023-05-14 22:19:48 · 1888 阅读 · 0 评论 -
Java数据结构——阻塞队列
阻塞队列BlockingQueue是支持两个附加操作的Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用BlockingQueue是一个接口,该接口一共有以下8个实现类其中我们最常用的就是以下两种①ArrayBlockingQueue 基于数组的有界阻塞队列②LinkedBlockingQueue 基于链表的阻塞阻塞队列下面是BlockingQueue接口中的抽象方法这些方法基本与常规的队列方法一致,这里就不一一做代码演示了。原创 2023-08-12 11:19:08 · 1879 阅读 · 3 评论 -
Java数据结构--堆
当一颗二叉树的每个节点都大于等于它的两个子字节时,它被称为堆有序。而堆是一组能够用堆有序的完全二叉树排序的元素,并在数组中按照层级储存总而言之堆具有一下性质:①堆逻辑上是一颗完全二叉树,但本质上确是数组②堆中的某个节点总是不大于或不小于其父节点的值其中最主要且需要我们掌握的就是增( offer ) 删( poll )查( peek )等方法。原创 2023-05-06 22:57:35 · 2191 阅读 · 1 评论 -
Java数据结构--二叉树(二叉查找树)
二叉树是几个有限无素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个节点。如图即为一个二叉树(可根据图片理解):注:该树并不为一棵二叉搜索树对于二叉树的遍历,可进一步分为三种:①前序遍历(根左右):对于每一棵子树,先访问该节点,然后是左子树,最后是右子树②中序遍历(左根右):对于每一棵子树,先访问左子树,然后是该节点,最后是右子树。原创 2023-04-12 15:32:56 · 1093 阅读 · 4 评论