![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 78
楠枬
保持思考
展开
-
AVL树(Java)
目录一、什么是AVL树二、AVL树的实现AVL树的节点AVL树的插入AVL树的旋转右单旋左单旋左右双旋 右左双旋AVL树的验证三、AVL树的性能分析在了解什么是AVL树之前,我们先回顾二叉搜索树的概念二叉搜索树(二叉排序树),它或是一棵空树,或具有以下性质:根据二叉搜索树的性质,我们可以发现:1. 二叉搜索树中最左侧的节点是树中最小的节点,最右侧的节点是树中最大的节点2. 若采用中序遍历二叉搜索树,则可得到一个有序的序列二叉搜索树最主要的作用就是用于进行查询:当二叉搜索树是一颗完全二叉树时:其查询的平均查找原创 2024-01-13 09:00:00 · 2869 阅读 · 25 评论 -
二叉搜索树
若二叉搜索树不为空树,由二叉树的性质(左子树上的所有节点的值都小于根节点的值,右子树上的所有节点的值都大于根节点的值),可通过比较插入节点和当前节点cur的值,找到插入节点的位置。找到插入节点的位置后,要通过cur的父亲节点将插入节点连接起来,因此我们可以定义一个parent节点,指向cur的父亲节点,来帮助我们插入节点。= root 且 cur = parent.right,则parent.right = cur.right。(即右子树中最左的数据),用找到的值替换掉cur,再删除找到的值。原创 2023-10-24 21:19:10 · 166 阅读 · 25 评论 -
Java循环队列
在线性队列中,一旦队列满了,即使队列的前面有空间,我们也不能插入下一个元素,这时,我们可以使用循环队列,来使用这些空间存储新的值。首先判断队列是否已满,若已满,添加失败,返回false,若没有,则在队尾rear位置添加数据,并将rear向后移动。首先判断队列是否为空,若为空,队列中无元素,抛出异常,若不为空,返回队头元素,并将front向后移动。首先判断队列是否为空,若为空,删除失败,返回false,若不为空,则将front向后移动。只能在一端进行插入数据操作,另一端进行删除数据操作的特殊线性表,是一种。原创 2023-10-06 14:37:17 · 727 阅读 · 27 评论 -
栈(Java)
是一种特殊的线性表,只允许在其固定的一端进行插入和删除操作。栈中的元素遵循先进后出(后进先出)原则进行插入和删除数据的一端始终不进行插入和删除操作的一端栈的插入操作,也可叫做进栈、入栈栈的删除操作压栈和出栈都在栈顶栈类似于弹夹,栈中的元素类似于子弹,最先放入弹夹中的子弹最后打出,最后放入弹夹中的子弹最先打出,同样的,先入栈的元素后出栈,后入栈的元素先出栈。原创 2023-09-27 21:16:25 · 351 阅读 · 14 评论 -
Java实现单链表
要创建链表首先要有节点,我们可以将节点定义为内部类//存放当前结点的值//存放下一节点的地址由于链表是通过前一个节点访问下一个节点的,因此我们需要知道链表的第一个节点,因此我们需要定义一个头节点//第一个节点。原创 2023-09-21 22:30:14 · 659 阅读 · 25 评论 -
ArrayList
foreach中第一个参数是数组元素或集合元素的类型,i是形参名, 第二个参数是数组或集合,foreach自动将数组或集合元素依次赋值给变量i,当每个元素都被迭代一次后,foreach自动结束循环。subList是List接口中定义的一个方法,用于返回集合中的一段,即从 fromIndex (包含该位置元素)位置,到 toIndex (不包含该位置元素)位置的元素。E set(int index, E e) //将下标为 index 位置的元素修改为 e,并返回 index 位置原来的元素。原创 2023-09-15 16:20:32 · 180 阅读 · 20 评论 -
Java时间复杂度和空间复杂度(详解)
上述代码用来求n的阶乘,其中,在for前的代码每行执行了一次,在for循环(i++)及其中的代码(ret *= i)每行执行了N-1次,那么该代码总执行了(1+2*(N-1))次,即(2*N-1)次,代码具体执行了多少次,与传入数据n相关。一个算法执行所需要的时间,我们可以将代码跑一遍得到具体的时间,但是如果每一个算法都测试一遍的话,十分耗费时间和精力,而且,其测试的结果高度依赖于测试环境,测试环境中的硬件不同会影响测试结果,测试数据的规模也会影响测试结果。+ N-1,利用等差数列求和公式,可得结果为。原创 2023-09-10 13:08:53 · 681 阅读 · 26 评论 -
Java字符串查找
在给定的字符串中查找需要的字符或字符串是常见的操作,以下是String类中常用的查找方法。原创 2023-09-06 12:23:39 · 1510 阅读 · 29 评论 -
Java稀疏数组
数组arr中许多值为0,若对二维数组直接进行存储,则会存储许多相同的数值0,造成空间的浪费,此时,我们可以用稀疏数组对其进行存储。稀疏数组的第一行,存放二维数组arr的行数、列数、不同数值的数量sum。,可使用稀疏数组来保存该数组,可以将稀疏数组看做是普通数组的压缩。后面几行,存放不同值元素在二维数组arr中的行、列、数值。要对二维数组进行存储,我们需要知道二维数组的。(1)遍历二维数组,确定不同元素的个数sum。(2)遍历稀疏数组, 对不同值元素进行赋值。(3) 遍历二维数组,对稀疏数组进行赋值。原创 2023-08-30 22:16:33 · 629 阅读 · 16 评论 -
Java异常处理
异常:程序在执行过程中发生的不正常行为Java中有许多不同类型的异常,例如算数异常()、空指针异常()、类型转换异常(当出现异常时,我们要设法处理异常,使程序能够继续正常运行当程序中出现异常时,将错误信息告知调用者。Java中虽然有许多异常类,但是并不能完全满足我们的需求,此时就需要我们依据实际情况,自定义异常类。原创 2023-08-29 17:49:08 · 505 阅读 · 13 评论 -
Java方法重写
重写override,也称为覆盖):在子类中对父类中允许访问的方法的实现过程进行重新编写,子类中方法的名称、返回值类型、参数列表与父类相同,只有方法体中的实现不同。原创 2023-08-07 09:29:12 · 3799 阅读 · 18 评论 -
Java final关键字详解
目录1.final2.final修饰变量(1)final修饰局部变量(2)final修饰成员变量 3.final修饰方法final关键字可以用来修饰变量、成员方法和类 对于基本类型,final修饰的变量的数值不可改变对于引用类型,final修饰的变量的地址值不可改变 例如:定义一个Person类创建final修饰的对象后,地址值不能改变 其中的内容可以进行修改(2)final修饰成员变量 成员变量具有初始值,因此在使用final修饰后必须手动赋值,不会再给初始值且不能使用se原创 2023-08-04 08:59:34 · 102 阅读 · 1 评论 -
Java构造方法(构造器)
构造方法(也称构造器):是一个特殊的成员方法,其名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。原创 2023-08-01 21:37:11 · 172 阅读 · 7 评论 -
Java二维数组详解
静态初始化虽然未指定二维数组的行和列,但编译器会在编译时会根据{}中的元素个数来确定数组行与列的大小。我们可以先找到一维数组,再找到该一维数组中要输出的元素。在使用二维数组时,若未对二维数组进行初始化,数组中的元素为默认值。若数组中的元素为基本数据类型,默认值为基本数据类型对应的默认值,二维数组的本质其实就是一维数组,只不过每个元素又是一个一维数组。如图所示,对于一个二维数组来说,数组元素中存放的是。若数组中的元素为引用类型,默认值为。在Java中,创建二维数组时,方法,将二维数组转换为字符串。原创 2023-07-31 19:24:14 · 7746 阅读 · 2 评论 -
Java中的基本数据类型
在为变量设置初始值的时候,值不能超过整数类型的表示范围,否则会导致溢出。原创 2023-07-29 10:09:33 · 543 阅读 · 4 评论 -
Java中的方法重载
方法重载(overload):若多个方法的方法名相同参数列表不同,则称这些方法被重载了方法重载满足:1.方法名必须相同2.参数列表不同(参数的个数不同、参数的类型不同、类型的次序不同)3.与返回值类型是否相同无关(即返回值不作为判断重载的条件)4.编译器在编译代码时,会对实参类型进行推演,根据推演的结果来确定调用哪个方法。原创 2023-07-28 11:14:49 · 2847 阅读 · 13 评论 -
String.format()函数的简单用法
String.format()函数类似于printf()函数,能够对字符串进行格式化或是进行加工,printf()函数直接将结果打印出来,而String.format()函数能够返回格式化后的字符串。原创 2023-06-26 22:42:04 · 688 阅读 · 3 评论 -
Java字符串比较
当创建一个字符串时,JVM首先会在字符串池中查找是否存在该字符串,若不存在,则在字符串池中创建该字符串;str3与str1、str4的地址不同,所以str1 == str3 、str3 == str4的结果都为false。当通过new的方式创建对象时,创建出来的对象都是存放在堆栈里面的,每new一次则是在堆栈中创建一个新的对象。比较两个字符串,逐一比较每个字符,当相比较的两个字符不同时,返回不同字符的ASCII码的差值。若两个字符串长度不同,但参与比较的字符相同,则返回两个字符串长度的差值。原创 2023-05-05 11:03:13 · 1424 阅读 · 4 评论