集合进阶(泛型、泛型通配符、数据结构(二叉树、平衡二叉树、红黑树

一、泛型类、泛型方法、泛型接口

1、泛型概述

泛型:是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检查。
泛型的格式:<数据类型>
注意:泛型只能支持引用数据类型。

 

泛型的好处

1、统一数据类型。
2、把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来。

泛型的细节

  • 泛型中不能写基本数据类型
  • 指定泛型的具体类型后,传递数据时,可以传入该类类型或者其子类类型
  • 如果不写泛型,类型默认是0bject

2、泛型类

3、泛型方法 

4、泛型方法的练习

定义一个工具类:ListUtil
类中定义一个静态方法addAll,用来添加多个集合的元素。

5、泛型接口 

二、泛型通配符和综合练习 

1、泛型的继承和通配符

  • 泛型不具备继承性,但是数据具备继承性

 2、练习——定义一个继承类

Animal

Cat

波斯猫

狸花猫

Dog

 

泰迪

哈士奇

text类 

3、总结

二、数据结构(二叉树、二叉查找树、平衡二叉树)

1、数据结构(树)

2、数据结构(二叉查找树)

①添加节点规则:

小的左边大的右边,一样的不存

3、数据结构(二叉树)遍历方式

①前序遍历:当前节点,左子节点,右子结点


②中序遍历:左子节点,当前节点,右子结点


③后序遍历:左子节点,右子结点,当前节点


④层序遍历:一层一层的去遍历

4、数据结构(平衡二叉树)

5、数据结构(平衡二叉树)需要旋转的四种情况

①左左:一次右旋


②左右:先局部左旋,再整体右旋


③右右:一次左旋


④右左:先局部右旋,再整体左旋 

6、数据结构(平衡二叉树)小结 

  • 在平衡二叉树中,如何添加节点?

小的在左边,大的在右边,一样的不存

  • 在平衡二叉树中,如果查找单个节点?

先跟根节点对比,小的在左,大的在右,依次比较

  • 为什么要旋转?

普通二叉树和二叉查找树不需要旋转,到目前为止只有平衡二叉树才需要旋转;

红黑树也需要旋转

旋转的目的:当添加了一个结点之后,导致这棵树不平衡了,那么需要旋转让这棵树重新保持平衡

  • 旋转的触发时机?

当成功添加了一个结点之后,破坏了这个平衡,就需要进行旋转

三、数据结构(红黑树、红黑规则、添加节点处理方案详解)

红黑树增删改查的性能都很好 

1、数据结构(红黑树)

2、⭐⭐数据结构(红黑树)红黑规则

3、数据结构(红黑树)添加节点的规则

——红黑树在添加节点的时候,添加的节点默认是红色的(效率高)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/856359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上位机图像处理和嵌入式模块部署(h750 mcu串口命令处理)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面学习103和407的时候&#xff0c;当时学过串口的收发。不过当时使用的主要是阻塞的方式。这一次&#xff0c;我们看下应该怎么利用中断的形式进…

【UE5.1】制作自己的载具

目录 前言 效果 步骤 一、制作载具模型 二、载具设置 三、控制载具 四、方向盘旋转 前言 在前面我们通过UE4完成了载具的制作&#xff0c;下面我们介绍一下如何通过UE5制作载具。 效果 步骤 一、制作载具模型 制作方法同【UE4 制作自己的载具】1-使用3dsmax制作载具…

PhotoShop批量生成存储jpg

1、说明 根据之前自动批量生成psd格式的文件。打印一般都是jpg格式的&#xff0c;那如果将这些psd的文件&#xff0c;生成jpg&#xff0c;本文采用ps的动作 2、生成动作 点击窗口-动作 录屏存储jpg动作 3、根据动作生成 选择相应动作之后选择需要处理的文件夹

Java面试八股之JVM永久代会发生垃圾回收吗

JVM永久代会发生垃圾回收吗 JVM的永久代&#xff08;PermGen&#xff09;在Java 8之前是存在的一部分&#xff0c;主要用于存储类的元数据、常量池、静态变量等。在这些版本中&#xff0c;永久代确实会发生垃圾回收&#xff0c;尤其是在永久代空间不足或超过某个阈值时&#x…

c#考试知识点

第一题 //数组{1&#xff0c;2&#xff0c;3&#xff0c;&#xff0c;8&#xff0c;6} //方法&#xff08;数组&#xff0c;目标值&#xff09; //输出 //接收一个数组&#xff0c;输出目标值是数组中哪两个数的和&#xff0c;并输出下标 using System; using System.Collectio…

企业该如何防查盗版?如何防软件后台泄密数据?

随着信息化的发展&#xff0c;企业日常办公越来越依赖互联网。终端以及普通PC终端在访问互联网过程中&#xff0c;会遇到各种各样不容忽视的风险&#xff0c;例如员工主动故意的数据泄漏&#xff0c;后台应用程序偷偷向外部发信息&#xff0c;木马间谍软件的外联&#xff0c;以…

xshell使用vi命令:bash:vim:command not found

你们好&#xff0c;我是金金金。 场景 此时我通过xshell客户端连接到了远程的虚拟机。想用vi命令编辑一个文件时&#xff0c;显示&#xff1a;bash: vim: command not found 排查 看报错提示就可以知道&#xff0c;没找到vim命令 解决 使用包管理器 apt 来安装 vim 更新你的软…

数据结构(中)

完全二叉树的第6层有10个结点&#xff0c;那么有&#xff08;21&#xff09;个叶子结点。 10-52*2*2*2 设树中某结点不是根结点&#xff0c;则离它最近的祖先结点是双亲结点 一颗有5个结点的深度为3的二叉树采用顺序存储方式存储&#xff0c;存储数组的大小至少为7 看深度&…

民宿小程序在线预约系统开发,提高品牌影响力

在旅游业发展旺盛的当下&#xff0c;也带动了各地民宿的发展。在科技的支持下&#xff0c;民宿小程序得到了快速发展&#xff0c;凭借方便快捷的优势为大众带来新的体验。 民宿小程序的发展为用户提供了便捷的预订渠道&#xff0c;用户可以根据对房间的要求选择&#xff0c;能…

[HGAME 2022 week1]Matryoshka(古典密码混合)

题目&#xff1a; 直接说方法&#xff1a; 首先这是一段盲文&#xff0c;要先将盲文反转&#xff0c; 然后再用摩斯密码转换 将得到的字符串去掉“,”后&#xff0c;base16解码 在尝试维吉尼亚密码 再用base64解码 然后用凯撒密码 最后栅栏密码&#xff08;22栏&#xff09;

Linux-账号和权限管理

目录 一、管理用户账号 1、用户账号类型 2、UID--身份标识 3、UID的分类 ​4、用户账号文件​ 5、chage-修改账号密码 5.1、chage—使用格式&#xff1a; 5.2、chage—使用参数&#xff1a; ​6、添加用户账号与管理 6.1、useradd—添加用户 6.2、passwd—设置/修改…

【HarmonyOS NEXT】har 包的构建生成过程

Har模块文件结构 构建HAR 打包规则 开源HAR除了默认不需要打包的文件&#xff08;build、node_modules、oh_modules、.cxx、.previewer、.hvigor、.gitignore、.ohpmignore&#xff09;和.gitignore/.ohpmignore中配置的文件&#xff0c;cpp工程的CMakeLists.txt&#xff0c;…

3d隐藏模型为什么就不见了?---模大狮模型网

在3D建模和设计过程中&#xff0c;经常会遇到需要隐藏某些模型的情况。然而&#xff0c;有时候隐藏之后再也找不到这些模型了。这种情况可能让人感到困惑和沮丧。本文将探讨3D隐藏模型后“消失”的原因&#xff0c;并提供一些解决方法&#xff0c;帮助您更好地管理和查找隐藏的…

循环的结构

一.简介 循环结构&#xff0c;一般常用在while&#xff0c;do…while&#xff0c;for循环三个语法&#xff0c;但我们一般来常用的是for循环&#xff0c;while与do…while我们只需要掌握就可以。 于此同时&#xff0c;我们需要掌握一下循环控制的关键字&#xff0c;开始循环时…

服务端⾼并发分布式结构演进之路

在进行技术学习过程中&#xff0c;由于大部分读者没有经历过一些中大型系统的实际经验&#xff0c;导致无法从全局理解一些概念&#xff0c;所以本文以一个"电子商务"应用为例&#xff0c;介绍从一百个到千万级并发情况下服务端的架构的演进过程&#xff0c;同时列举…

SpringBoot:SpringBoot集成Druid监控慢SQL

一、前言 数据库连接池是一个至关重要的组成部分&#xff0c;一个优秀的数据库连接池可以显著提高应用程序的性能和可伸缩性。常见的连接池&#xff1a;Druid、HikariCP、C3P0、DBCP等等&#xff0c;不过目前大部分都是使用Druid或者SpringBoot默认的HikariCP&#xff01; 本文…

一个完整的Flutter应用

15.2 Flutter APP代码结构 | 《Flutter实战第二版》 我们先来创建一个全新的Flutter工程&#xff0c;命名为"github_client_app" 我们在项目根目录下分别创建imgs和fonts、jsons、l10n文件夹 工程目录如下&#xff1a; 在lib下创建文件夹如下&#xff1a; 在“jso…

Word和Excel如何快速对齐姓名

日常工作经常遇到整理参会人员名单时&#xff0c;有2字姓名、3字姓名&#xff0c;为保证文档美观&#xff0c;你是否还在一个一个空格在敲空格&#xff1f; 今天刘小生分享如何在Word和Excel中快速对齐姓名&#xff0c;快来练起来吧&#xff01; 1. Word姓名对齐 【第一步】…

自动化平台总结(httprunner+djangorestframework+python3+Mysql+Vue)【基础结构构思】

一、前言 把一个以前自己搭建的自动化测试平台进行了一下重构升级&#xff0c;记录一下过程中的一些问题和总结。 二、简介 搭建的平台语言使用的是Python3.6&#xff0c;未来有空可能考虑加个java版本。前端用的Vue&#xff0c;主体是httprunner2.XDjangorest-framework&am…

Elasticsearch:智能 RAG,获取周围分块(二)

在之前的文章 “Elasticsearch&#xff1a;智能 RAG&#xff0c;获取周围分块&#xff08;一&#xff09; ” 里&#xff0c;它介绍了如何实现智能 RAG&#xff0c;获取周围分块。在那个文章里有一个 notebook。为了方便在本地部署的开发者能够顺利的运行那里的 notebook。在本…