返回顶部
首页 > 资讯 > 后端开发 > Python >详解Java集合中的基本数据结构
  • 235
分享到

详解Java集合中的基本数据结构

2024-04-02 19:04:59 235人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

集合中三大数据结构 数组 内存地址连续 可以通过下标的成员访问,下标访问的性能高 增删操作有较大的性能消耗(需要动态扩容) 链表(双向链表)

集合中三大数据结构

在这里插入图片描述

数组

  • 内存地址连续
  • 可以通过下标的成员访问,下标访问的性能高
  • 增删操作有较大的性能消耗(需要动态扩容)

在这里插入图片描述

链表(双向链表)

  • 灵活的空间要求,存储空间不要求连续
  • 不支持下标访问,支持顺序遍历搜索
  • 针对增删操作找到对应的节点改变链表的头尾指针指向即可,无需移动元数据存储位置

在这里插入图片描述

树(Java中二叉树特性)

  • 某节点的左子树节点仅包含小于该节点的值
  • 某节点的右子树节点仅包含大于该节点的值
  • 节点必须是二叉树
  • 顺序排列

在这里插入图片描述

存在问题:树可以认为是介于数组和链表二者之间的一种数据结构,拥有较快的查询速度同时拥有较快的插入和删除速度。但是在树出现极端或严重的不平衡情况下会导致效率低下

在这里插入图片描述

基于红黑树折中解决二叉树不平衡带来的效率低下问题

红黑树

  • 红黑树,Red-Black Tree [RBT]是一个自平衡(不是绝对平衡)的二叉查找树(BST),树上的每个节点需要遵循下面的规则
  • 每个节点要么是黑色,要么是红色
  • 根节点为黑色
  • 每个叶子节点(NIL)是黑色
  • 不能存在两个连续的红色节点(红色节点的两个子节点必须是黑色)
  • 任一节点到叶子节点的路径包含相同数量的黑节点

在这里插入图片描述

红黑树通过什么自平衡

左旋:以某个节点作为支点(旋转节点),其右子节点变为旋转节点的父节点,右子节点的左节点变为旋转节点的右子节点,左子节点保持不变

在这里插入图片描述

右旋:以某个节点作为支点(旋转节点),其左子节点变为旋转节点的父节点,左子节点的右子节点变为旋转节点的左子节点,右子节点保持不变

在这里插入图片描述

变色:节点的颜色由红色变为黑色或者黑色变为红色

在这里插入图片描述

红黑树插入场景

1、红黑树为空

1.1 插入节点作为根节点并把节点设置为黑色

2、插入节点的父节点为黑节点\

2.1 直接插入

3、插入节点的父节点为红节点

3.1 叔叔节点存在且为红节点

  • 1、P节点和S节点设置为黑色
  • 2、PP节点设置为红色
  • 3、PP设置为当前插入节点
  • 4、再次重复上述步骤

3.2 叔叔节点不存在或者叔叔节点为黑色

3.2.1 P节点是PP节点的左节点

3.2.1.1 插入节点是P节点的左节点

  • 1、P设置为黑色
  • 2、PP节点设置为红色
  • 3、PP节点右旋

3.2.1.2 插入节点是P节点的右节点

  • 1、P节点左旋
  • 2、把P设置为插入节点(此时等于上面的场景)
  • 3、PP节点右旋

3.2.2 P节点是PP节点的右节点

3.2.2.1 插入节点是P节点的右节点

  • 1、P节点设置为黑色
  • 2、PP节点设置为红色
  • 3、PP节点左旋

3.2.2.2 插入节点是P节点的左节点

  • 1、P节点右旋
  • 2、将P设置为插入节点(此时等于上面场景)
  • 3、PP节点左旋

PP节点左旋

3.2.2.2 插入节点是P节点的左节点

  • ​ 1、P节点右旋
  • ​ 2、将P设置为插入节点(此时等于上面场景)
  • ​ 3、PP节点左旋

在这里插入图片描述

到此这篇关于详解Java集合中的基本数据结构的文章就介绍到这了,更多相关Java数据结构内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解Java集合中的基本数据结构

本文链接: https://lsjlt.com/news/127582.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解Java集合中的基本数据结构
    集合中三大数据结构 数组 内存地址连续 可以通过下标的成员访问,下标访问的性能高 增删操作有较大的性能消耗(需要动态扩容) 链表(双向链表) ...
    99+
    2024-04-02
  • Java集合中基本数据结构的示例分析
    这篇文章主要介绍Java集合中基本数据结构的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!集合中三大数据结构数组内存地址连续可以通过下标的成员访问,下标访问的性能高增删操作有较大的性能消耗(需要动态扩容)链表...
    99+
    2023-06-15
  • Java中的集合框架:理解Java中的数据结构和集合
    文章目录 Java中的集合框架:理解Java中的数据结构和集合1. 引言2. 技术原理及概念2.1 基本概念解释2.2 技术原理介绍 3. 实现步骤与流程3.1 准备工作:环境配置与依赖...
    99+
    2023-10-04
    数据结构 java 链表
  • Java超详细图解集合框架的数据结构
    目录1、什么是集合框架?2、Collection接口1.通过泛型来指定相应集合中的对象类型2.Collection常见方法使用3、Map 接口Map常见方法使用4、具体的实现类1、什...
    99+
    2024-04-02
  • Java集合和数据结构排序实例详解
    目录概念插入排序直接插入排序代码实现性能分析希尔排序代码实现性能分析选择排序直接选择排序代码实现性能分析堆排序代码实现性能分析交换排序冒泡排序代码实现性能分析快速排序代码实现性能分析...
    99+
    2024-04-02
  • python常用数据结构集合详解
    目录set集合集合定义与使用集合常用方法add()update()remove()discard()pop()clear()集合运算交集运算并集运算差集运算集合推导式set集合 集合...
    99+
    2024-04-02
  • java数据结构并查集详解
    目录一、概述二、实现2.1 Quick Find实现2.2 Quick Union实现三、优化3.1基于size的优化3.2基于rank优化3.2.1路径压缩(Path C...
    99+
    2024-04-02
  • Python数据结构:集合
    集合的定义  使用大括号,并且里面必须有初始值,否则是dict字典类型 集合的特征 集合内部的元素无序,所以不能使用索引、切片等操作 集合内部的元素具有唯一性,不允许元素重复出现 集合内部的元素,只能存放int, float, s...
    99+
    2023-01-30
    数据结构 Python
  • (python)数据结构---集合
    一、描述 set翻译为集合 set是可变的、无序的、不可重复的 set的元素要求可哈西(不可变的数据类型可哈西,可变的数据类型不可哈希) set是无序的,因此不可以索引,也不可以修改 线型结构的查询时间复杂度是O(n),随着数据的增大...
    99+
    2023-01-30
    数据结构 python
  • Java数据结构之集合框架与常用算法详解
    目录1 集合框架1.1 集合框架概念1.2 容器涉及的数据结构2 算法2.1 算法概念2.2 算法效率3 时间复杂度3.1 时间复杂度概念3.2 大O的渐进表示法3.3 推导大O阶方...
    99+
    2023-05-18
    Java集合框架 Java算法
  • Java集合框架的数据结构是什么
    这篇文章主要介绍“Java集合框架的数据结构是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java集合框架的数据结构是什么”文章能帮助大家解决问题。1、什么是集合框架?在java中,有一套现成...
    99+
    2023-06-29
  • 详解Java实现数据结构之并查集
    目录​一、什么是并查集二、并查集解析2.1、初始化2.2、并 union(int a,int b)2.3、查 search(int a)三、优化四、代码实现五、...
    99+
    2024-04-02
  • gosyncWaitgroup数据结构实现基本操作详解
    目录WaitGroup 示例WaitGroup 基本原理背景知识信号量WaitGroup 中的信号量WaitGroup 数据结构noCopystatesemaWaitGroup 的三...
    99+
    2023-01-03
    go sync Waitgroup数据结构 go sync Waitgroup
  • python中基本数据结构(一)
    1- 什么是栈?   一个栈是一个项的有序集合。添加项和移除项都在同一端,这一端被称为‘栈顶’。另一端被称为‘栈底’。   栈使用的是后进先出原则即‘LIFO’原则,也就是说最新添加的项在移除时是第一个被移除的。在日常生活中有很多例子比如...
    99+
    2023-01-30
    数据结构 python
  • java数据结构ArrayList详解
    目录简介成员变量构造函数无参构造函数构造一个初始容量大小为initialCapacity的ArrayList使用指定Collection来构造ArrayList的构造函数主要操作方法...
    99+
    2024-04-02
  • Java常见基本数据结构概览
            Java数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科。在Java数据结构中最常用的类型无外乎以下几种:M...
    99+
    2023-05-31
    java 数据结构 ava
  • 基于java中集合的概念(详解)
    集合是储存对象的,长度可变,可以封装不同的对象迭代器: 其实就是取出元素的方式(只能判断,取出,移除,无法增加)就是把取出方式定义在集合内部,这样取出方式就可以直接访问集合内部的元素,那么取出方式就被定义成了内部类.二每一个容器的数据结构不...
    99+
    2023-05-31
    java 集合 概念
  • Java数据结构中图的进阶详解
    目录有向图有向图API设计有向图的实现拓扑排序拓扑排序图解检测有向图中的环检测有向环的API设计检测有向环实现代码基于深度优先的顶点排序顶点排序API设计顶点排序实现代码:有向图 有...
    99+
    2024-04-02
  • Java数据结构之栈的线性结构详解
    目录一:栈二:栈的实现三:栈的测试四:栈的应用(回文序列的判断)总结一:栈 栈是限制插入和删除只能在一个位置上进行的表,此位置就是表的末端,叫作栈顶。 栈的基本操作分为push(入...
    99+
    2024-04-02
  • java数据结构之栈的详解
    目录一、栈1.栈的应用1.1括号匹配1.2后缀表达式1.3用栈实现队列1.4最小栈1.5栈的压入和弹出序列总结一、栈 栈的特性就是先进后出,常用方法是入栈(push()),出栈(po...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作