首页 > 编程语言 >深入解析Java中的核心数据结构:从基础到进阶实战

深入解析Java中的核心数据结构:从基础到进阶实战

时间:2024-04-01 11:32:09浏览次数:23  
标签:Java 进阶 元素 链表 new 数据结构 节点

在软件开发领域,熟悉并掌握数据结构对于提升程序性能和优化算法至关重要。本文将全面介绍Java中常用的核心数据结构,辅以示例代码和概念图解,以帮助读者更好地理解和应用这些数据结构。

1. 数组(Array)

数组是Java中最基础的数据结构之一,它是在内存中一块连续区域存放相同类型元素的集合。数组支持通过索引访问元素,时间复杂度为O(1)。

int[] numbers = new int[5];
numbers[0] = 1; // 使用索引访问和修改元素

在这里插入图片描述

2. 链表(LinkedList)

链表是由一系列节点构成的,每个节点包含数据和指向下一个节点的引用。链表分为单向链表和双向链表,Java的LinkedList类实现了双向链表。

单项链表

在这里插入图片描述

双向链表

在这里插入图片描述

3. 栈(Stack)

栈是一种遵循后进先出(LIFO)原则的数据结构,Java通过java.util.Stack类实现栈功能。

Stack<String> stack = new Stack<>();
stack.push("Hello"); // 元素入栈
stack.pop(); // 弹出栈顶元素

在这里插入图片描述

4. 队列(Queue)

队列遵循先进先出(FIFO)原则,Java提供了java.util.Queue接口以及LinkedList和PriorityQueue等实现。

Queue<String> queue = new LinkedList<>();
queue.offer("World"); // 元素入队
queue.poll(); // 出队并移除队头元素

在这里插入图片描述

5. 集合(Set)

Set是一种不允许存在重复元素的集合,常见的Java实现有无序的HashSet和有序的TreeSet。

Set<String> set = new HashSet<>();
set.add("Java"); // 添加元素,自动去重

6. 映射(Map)

Map是一种键值对的数据结构,Java的HashMap和TreeMap分别基于哈希表和红黑树实现。

Map<String, Integer> map = new HashMap<>();
map.put("Language", 1); // 添加键值对

7. 树形结构(Tree)

Java中的树形结构,包括二叉树、二叉搜索树、平衡二叉树(如红黑树)、线段树、区间树以及前缀树(Trie)。虽然Java标准库并未直接提供所有树结构,但通过自定义类实现,并提及TreeMap和TreeSet内部采用红黑树实现。

二叉树

在这里插入图片描述

红黑树

红黑树是一种自平衡二叉树

红黑树要素:
  • 每个节点要么是黑色,要么是红色
  • 根节点都是黑色
  • 每个叶子节点都是黑色
  • 每个红色节点的两个子节点一定是黑色
  • 任意一节点到每个叶子节点的路径中都包含相同的黑色节点
旋转原理:

1.左旋:以某个节点作为支点,将其右子节旋转为父节点,右子节点的左子节点转换为右节点,左子节点保持不变
在这里插入图片描述
2.右旋:以某个节点作为支点,将其左子节点旋转为父节点,左子节点的右子节点旋转为左子节点,右子节点保持不变
在这里插入图片描述
3.变色:节点的颜色
在这里插入图片描述

标签:Java,进阶,元素,链表,new,数据结构,节点
From: https://blog.csdn.net/weixin_43828090/article/details/137131151

相关文章

  • 【JavaEE】计算机是如何工作的
    文章目录一、计算机发展史二、冯诺依曼体系(VonNeumannArchitecture)三、CPU基本工作流程一、计算机发展史计算的需求在人类的历史中是广泛存在的,发展大体经历了从一般计算工具到机械计算机到目前的电子计算机的发展历程。二、冯诺依曼体系(VonNeumannArchitectur......
  • Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field p
    完整日志:Causedby:java.lang.reflect.InaccessibleObjectException:Unabletomakefieldprivatefinaljava.lang.Classjava.lang.invoke.SerializedLambda.capturingClassaccessible:modulejava.basedoesnot"opensjava.lang.invoke"tounnamedmodule......
  • 【Redis】快速入门 数据类型 常用指令 在Java中操作Redis
    文章目录一、简介二、特点三、下载与安装四、使用4.1服务器启动4.2客户端连接命令4.3修改Redis配置文件4.4客户端图形化界面五、数据类型5.1五种常用数据类型介绍5.2各种数据类型特点六、常用命令6.1字符串操作命令6.2哈希操作命令6.3列表操作命令6.4集合操......
  • 这 Java 程序员简历一看就是包装的。。
    大家好,我是R哥。最近做Java面试辅导,看了许多小伙伴的简历,有的人的简历一看就知道是包装的,比如这位,他自己都承认了:包装过的简历,作为多年面试官,我一眼就能看出来,相信其他面试官也会有同样的感觉,这也是为什么很多人的简历都是已读不回的状态。下面我简单说说包装的简历的特点。......
  • android :java 计算器xml文件
     这个代码显示异常<?xmlversion="1.0"encoding="utf-8"?><GridLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="matc......
  • Java基础-JDK,JRE,JVM面试题
    目录1、JDK2、JRE3、JVM(1)JVM的跨语言特性(2)垃圾回收机制(GC)(3)内存溢出(OOM)(4)内存泄漏(5)内存溢出与内存泄漏的关系1、JDKJavaDevelopmentKit,Java开发工具包,包含JRE、开发工具(javac编译、java运行、jdb调试、jar打包);2、JREJavaRuntimeEnvironment,Java运行时环境,包含JV......
  • 如在 Java 中分割 Excel 工作表
    前言在Excel中创建的大多数商业报告不是单页的文档,而是包含了多个上下文相关的信息,这些信息被存储在多个工作表中。例如我们的一些地区销售报告、按部门分类的员工记录、每家店铺的库存清单等。然而,随着Excel文件中工作表数量的增加,要在单一文档内导航和管理数据会变得十分具有......
  • 学习java第二十九天
    如何通过注解配置文件?@Configuration 用于指定当前类是一个spring配置类,当创建容器时会从该类上加载注解,value属性用于指定配置类的字节码。@ComponentScan 用于指定Spring在初始化容器时要扫描的包。basePackages属性用于指定要扫描的包。@PropertySource 用于加......
  • 【粉丝福利社】《Effective Java》(文末送书-进行中)
    ......
  • Java实现ATM机模拟系统(week1)
    目录目的项目规划(第一周)ATM机系统第一周需求分析账户管理大类Account(账户)类AccountOperations(对账户操作)接口创建账户账户内容管理账户权限管理User类UserOperations(用户操作)接口Operations类货币大类基本属性方法操作界面合作开发(利用git)后言 ......