自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 HashMap源码解析

又由上文可知,HashMap中的resize()扩容方法可能会触发一系列的TreeNode类的方法,依次为:split()、untreeify()、treeify()、tieBreakOrder()、balanceInsertion()、moveRootToFront()、checkInvariants(),其中split方法是入口。每次插入节点后都会进行平衡调整,确保红黑树保持平衡。插入平衡调整过程会针对新添加的节点x进行操作,最终返回调整后的根节点root,确保整棵树符合红黑树的特性要求。

2025-08-11 22:31:42 724

原创 数据结构-红黑树

/ 节点颜色定义​// 节点内部类T key;Node left;Node right;​​// 空节点(所有叶子节点均指向该空节点,默认为黑色)​root = nil;Case 1:插入根节点直接染黑(满足“根叶黑”)。Case 2:叔叔节点为红色操作:父、叔、祖父变色(红↔黑互换)。递归:将祖父视为新插入节点,继续检查。Case 3:叔叔节点为黑色根据父子孙的相对位置类型旋转操作后续操作LL祖父右旋父与祖父变色RR祖父左旋父与祖父变色LR。

2025-08-10 23:01:05 853

原创 LinkedList源码解析

*** 删除链表的最后一个节点* @param l 要删除的最后一个节点(必须存在)* @return 被删除节点存储的数据*/// 1. 先记下最后一个节点的数据和它前面的节点// 保存要返回的数据// 记下倒数第二个节点// 2. 清理要删除的节点,方便垃圾回收// 清空数据// 断开和前面节点的连接// 3. 现在倒数第二个节点变成最后一个节点了// 4. 处理链表可能变空的情况// 如果倒数第二个节点不存在,说明链表空了// 清空头指针} else {

2025-08-10 11:14:11 650

原创 小鹏汽车26届秋招Java一面

🙌面试感想:面试官非常友好,一直在给提示,因为有些内容没有完全切中他想听到的重点的话他就会给提示。另外,实习和项目经历需要准备充分,整个面试主要围绕实习和项目经历展开发散性提问。还有就是可能比较关注微服务和中间件方面的掌握情况,传统Java基础知识考察相对较少。🕐面试时间:20250804,面试时长50min-1h。作者:cjjjjjjj。📍面试公司:小鹏汽车。💻面试岗位:Java。

2025-08-08 21:55:50 284

原创 Java中的内部类

内部类分为四种类型:静态内部类、成员内部类、局部内部类和匿名内部类。静态内部类静态内部类是定义在类内部的静态类。静态内部类可以访问外部类所有的静态变量和方法,即使是private的也一样。静态内部类和一般类一致,可以定义静态变量、方法,构造方法等。其它类使用静态内部类需要使用“外部类。静态内部类”方式。Java集合类HashMap内部就有一个静态内部类Entry,用于存放元素,但对使用者是透明的。成员内部类成员内部类是定义在类内部的非静态类。

2025-08-08 21:37:37 420

原创 Java中的注解

Java注解是在JDK5时引入的新特性,也被称为元数据。注解提供了一种安全的类似注释的机制,用来将信息或元数据与程序元素进行关联。注解是附加在代码中的一些元信息,用于工具在编译、运行时进行解析和使用,起到说明、配置的功能。创建自定义注解的格式为:public @interface 注解名称{属性列表}。自定义注解的属性列表可以为0个或多个,每个属性由属性名和属性类型组成。使用自定义注解时,在注解声明中指定属性值。

2025-08-08 21:32:51 818

原创 Java中的代理模式

代理设计模式的原理:使用代理对象包装原始对象,通过代理对象调用原始对象的方法。代理模式的作用:在不修改原对象的基础上增强该对象的方法。代理模式的分类:静态代理和动态代理。静态代理的缺点:不利于程序扩展,每个代理类只能为一个接口服务。动态代理的优点:可以将多个方法统一处理,更加灵活。代理模式的原理:代理设计模式的原理是使用一个代理对象包装原始对象。对原始对象的调用都要通过代理对象。代理对象决定是否以及何时将方法调用转到原始对象上。代理模式的作用代理模式的作用就是在。

2025-08-08 20:43:00 1023

原创 平衡二叉搜索树

基础属性:首先是一棵二叉搜索树(满足左子树节点值 < 根节点值 < 右子树节点值)。平衡条件:所有节点的左子树高度 - 右子树高度的绝对值 ≤ 1。平衡因子:左子树高度 - 右子树高度的差值(用于判断是否平衡)。AVL 树是二叉搜索树的改进,通过平衡因子和旋转操作保持平衡,确保操作效率稳定在 O (log n)。核心是通过左旋、右旋处理四种失衡类型(LL、RR、LR、RL)。插入和删除后需检查平衡,调整逻辑因操作不同而略有差异(插入调最近失衡节点,删除逐层检查)。/**

2025-07-30 22:34:48 997

原创 二叉搜索树

(如 AVL 树、红黑树),通过旋转操作保持树平衡。这里演示一下用左子树中的最大节点覆盖待删除节点。遇到空节点 → 失败。:每次插入或删除都需要移动后面的所有元素。(它一定是叶子节点或单子节点,递归处理)。只有左子树):用它的唯一子树替代自己。(均摊 O(log n))的树形结构。当前节点 → 往左子树找。当前节点 → 往右子树找。,替换后不会破坏BST性质。→ 树变成一条向右的链。→ 后面所有元素后移。→ 后面所有元素前移。(很少修改,频繁查找)。即从根节点开始比较。,同样保证结构正确。

2025-07-30 18:39:12 202

原创 数据结构-树

树是一种与自然界中的树木类似的数据结构(呈现倒置形态),其中非空树有且仅有一个根节点。:树中的每个元素统称为节点。:位于顶层的节点,没有父节点。图中A节点即为根节点。:包含子节点的节点。例如B节点是D、E节点的父节点。:某个节点直接包含的子树根节点。图中D、E节点就是B节点的子节点。:拥有相同父节点的节点。D和E节点因为都隶属于B节点,所以互为兄弟节点。:不包含任何子节点的末端节点。图中D、F、H、I都属于叶子节点。:从该节点到最远叶子节点路径上的边数。:从根节点到该节点路径上的边数。

2025-07-30 17:27:44 945

原创 ArrayList核心原理与源码解析

fastRemove避免重复检查提升性能使用双指针原地操作减少内存分配本地方法实现高效数据移动6.3.3.替换指定位置元素/*** 替换列表中指定位置的元素(时间复杂度O(1))* @param index 要替换的位置索引(0 ≤ index < size)* @param element 要存储的新元素(允许为null)* @return 被替换的旧元素* @throws IndexOutOfBoundsException 如果索引越界(index < 0 || index ≥ size)

2025-07-22 00:03:11 1066

原创 Java中的字符串

方法名称功能描述1. 字符串长度length()返回字符串的字符长度2. 字符获取返回指定索引位置的字符(从0开始)3. 子串提取从beginIndex到末尾提取子串提取beginIndex到endIndex-1的子串4. 字符串比较按字典顺序比较字符串(区分大小写)比较字符串内容是否相同忽略大小写比较内容忽略大小写按字典顺序比较5. 字符串连接将指定字符串连接到原字符串末尾6. 字符查找返回字符/子串第一次出现的索引从指定位置开始正向查找返回字符/子串最后一次出现的索引从指定位置开始反向查找。

2025-07-19 12:56:30 846

原创 Java中的复制

将一个对象的引用复制给另外一个对象。有三种方式:直接赋值、浅拷贝、深拷贝。这三种概念实际上都是为了拷贝对象。

2025-07-19 00:24:04 854

原创 Java中的反射

反射机制是指在,对于任意一个类都能够。Java 中的反射机制可以实现以及的功能。反射机制提供了一种在程序。通过反射机制,可以在,而。反射机制在Java中的应用广泛,包括框架开发、插件机制、序列化和反序列化等。

2025-07-18 21:31:49 656

原创 Java中的范型

泛型是jdk5引入的新特性。泛型的作用是在编译期进行,避免了。泛型的本质是,可以在。泛型可以用在中,分别被称为。

2025-07-18 21:12:50 1029

原创 Java中的异常处理

try 块:用于捕获异常,可以接零个或多个 catch 块,如果没有 catch 块,则必须跟一个 finally 块。catch 块:用于处理 try 块捕获到的异常。finally 块:无论是否捕获或处理异常,finally 块里的语句都会被执行。当在 try 块或 catch 块中遇到 return 语句时,finally 语句块将在方法返回之前被执行。特殊情况下,finally 块可能不会被执行:在 finally 语句块中发生了异常。

2025-07-18 21:01:32 955

原创 Java中的抽象类和接口

接口不能用new实例化,但可以声明,但是必须引用一个实现该接口的对象。从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。接口的方法默认是public,所有方法在接口中不能有实现(Java 8开始接口方法可以有默认实现),抽象类可以有非抽象的方法。接口中的实例变量默认是final类型的,而抽象类中则不一定。一个类实现接口的话要实现接口的所有方法,而抽象类不一定。一个类可以实现多个接口,但最多只能实现一个抽象类。

2025-07-18 17:05:52 170

原创 Java中的关键字

访问修饰符用于控制类中可访问的内容。访问修饰符可以修饰属性、方法和构造器。private修饰符表示只能在本类中使用。default修饰符表示什么也不写,默认在同包中的其他类可访问。protected修饰符表示受保护的,不同包的子类可访问。public修饰符表示在任意地方都可以访问。

2025-07-18 17:01:22 280

原创 面向对象的三大特征

封装:将对象的属性隐藏在对象内部,提供访问和修改属性的方法。封装的实现方式:使用getter和setter方法来操作属性。封装的优点:保护对象内部状态的安全性,提高代码的可维护性和重用性。

2025-07-18 16:47:14 135

原创 Java中的方法重载/重写

方法重载的目的是解决两个或多个功能相同的不同方法在命名时出现多个不同方法名的问题。在同一个类中,具有相同方法名的一组方法,但是参数列表不一样的这一组方法称为方法重载。方法重载的条件包括:参数个数不一样;对应位置的参数类型不一样。方法重载与以下无关项无关:参数名;返回值类型。例。

2025-07-18 16:32:29 179

原创 Java中的流程控制

【代码】Java中的流程控制。

2025-07-18 16:26:27 125

原创 Java中的序列化

序列化是将数据结构或对象转换成二进制字节流的过程,反序列化是将序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程。在Java中,序列化的都是对象(Object),即实例化后的类(Class);而在C++这种半面向对象的语言中,struct定义的是数据结构类型,class对应的是对象类型。对于需要持久化Java对象的情境(如保存到文件或网络传输),都需要用到序列化和反序列化。

2025-07-18 16:08:49 278

原创 Java中的值传递

程序设计语言中,将实参传递给方法的方式分为两种:值传递和引用传递。值传递是指方法接收的是实参值的拷贝,会创建副本。引用传递是指方法接收的直接是实参所引用的对象在堆中的地址,不会创建副本,对形参的修改将影响到实参。很多程序设计语言(如C++、Pascal)提供了两种参数传递的方式。不过,在Java中只有值传递。通过三个例子来证明这一点:案例1:传递基本类型参数,实参的值被复制到形参,对形参的修改不会影响到实参。

2025-07-18 15:56:53 208

原创 Java中的运算符

Java允许把不超过byte、short、char的取值范围的算数表达式的值赋给byte、short、char型变量。如果表达式中最高精度为单精度浮点数(float),则按单精度进行运算。例如,5.0f/2+10的结果为12.5f。如果表达式中有双精度浮点数(double),则按双精度进行运算。例如,5.0/2+10的结果为12.5d。如果表达式中最高精度为long,则按long精度进行运算。例如,12L+100+'a'的结果为209L据。如果表达式中最高精度低于int型整数,则按int精度进行运算。

2025-07-17 17:01:35 243

原创 Java中的基本数据类型

Java提供了8种基本数据类型,包括数值类(byte、short、int、long、float、double)和非数值类(char、boolean)。

2025-07-17 16:31:41 143

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除