数据库高级 II

news2024/11/18 6:03:53

数据库高级 II

如何保证二叉排序树中的元素是可比较大小的

  • 让元素所属的类实现接口Comparable

  • 比较器:

    Comparable: 内比较器,类实现该接口后,需要重写其中的抽象方法,在类的内部定义比较规则.
        观察String对象之间的比较
    	练习:创建Student类型,其中的属性有:id 学号,name  姓名, age 年龄
    		1. 将多个Student保存到集合中(乱序),对集合中的所有student数据根据学号进行升序排列
    			Collections.sort(list)
            	对集合排序的机制是什么?  
            		sort方法内部会自动调用集合中元素的compareTo方法
            2. 改变比较规则,要求按照学生的age降序排列 -- 不能改compareTo方法中的代码
            3. 改变比较规则,要求按照学生的name升序排列
    
    Comparator:外比较器   比较规则定义在类的外部
    	通常用于:不改变原有比较规则,要使用新的/临时的比较规则,此时就可以在类的外部实现该接口,定义新的比较规则.
            Collections.sort(list,Comparator)
    
定义二叉排序树
public class BinarySearchTree<E extends Comparable<E>> {
    //根节点
    private Node root;

    //定义内部类表示节点
    private class Node{
        private E ele;  //节点中保存的元素对象
        private Node left;  //左子树指向的节点
        private Node right;  //右子树指向的节点

        //定义有参构造方法,用于创建节点
        Node(E ele){
            this.ele = ele;
        }
    }
添加元素
思路:
1. 判断root是否为null
	-null,则将元素封装成节点,称为root,返回true
	-不为null,和root进行比较,比较的目的是将元素尝试添加为root的left/right子树
		- 和root相等,添加失败,返回false,结束
		- 大于>root,尝试添加为root的right;判断right是否为null,
			-null,则让新元素封装成节点,称为right,添加成功,返回true
			- 不为null,继续和right的节点进行比较,尝试将元素添加为right的left/right子树
		- 小于,同理
遍历二叉排序树中元素
二叉树的遍历:
	先序遍历: 根 左 右
	中序遍历: 左 根 右  -- 得到升序排列的结果
	后序遍历: 左 右 根

请添加图片描述

重写toString
目的:实现输出引用,将二叉排序树中的元素遍历,并以以下格式返回:
	若树中没有节点,此时返回[];若树不为空,则返回[1,2,3,45,78]
	
1. 定义方法完成中序遍历,要求改方法返回遍历后元素拼接成的字符串
2. 重写toString方法,其中调用中序遍历的方法,用于获取所有元素
	1. 判断root是否为null,null,则返回"[]"
       - 不为null,调用中序遍历的方法,得到元素遍历结果
       
注意点:static成员变量是属于对象的,会随着对象的重新创建而重新初始化
查询元素的节点
判断root是否为null
	-null,则树中没有节点,返回null
	- 不为null,以root节点为基准,判断root是否为要找的目标节点
		- 判断e是否和root的ele相等 -- compareTo,
			- 若相等,说明root为要找的节点,返回当前节点,结束
			- 若e>ele,则到节点的right去查找目标节点
				- 若right为null,说明目标元素不存在于树中,返回null
				- 若right不为null,判断right指向的节点是否为要找的目标节点,重复上述过程
			- 若e<ele,同理
删除元素
1. 删除叶子节点:让其父节点指向它的引用置为null
2. 删除有一颗子树的节点:让父节点指向它的引用指向删除节点的子节点
3. 删除有两颗子树的节点:可以选择让删除节点的前驱节点或后继节点上来替换该节点.
    
    前驱节点和后继节点:是指升序排列后,删除节点的前一个元素叫做前驱节点;删除节点的后一个元素叫做后继节点
    
    排序:  12,33,45,67,88
题目
  1. 以下程序的输出结果是什么

    static成员变量是属于对象的,会随着对象的重新创建而重新初始化.
    public class HasStatic {   
        private int x = 100;
        public static void main(String[] args) {
            HasStatic has1 = new HasStatic(); 
            has1.x++;   
            HasStatic has2 = new HasStatic();  
            has2.x += has1.x; 
            has1 = new HasStatic();  
            has1.x--;   
            System.out.println("x="+has1.x);  //99   
            System.out.println("x="+has2.x);  //201
        }
    }
    

    请添加图片描述
    以下程序的输出结果是什么

public class HasStatic {
    private static int x = 100;   
    public static void main(String[] args) {
        HasStatic has1 = new HasStatic();
        has1.x++;   
        HasStatic has2 = new HasStatic();
        has2.x += has1.x;   
        has1 = new HasStatic();
        has1.x--;   
        HasStatic.x--;  
        System.out.println("x="+has1.x);    //200
    }
}

请添加图片描述

  1. String Str = new String(“ab”+“c”+“d”) 创建了几个String对象

    2个   字符串字面量之间的拼接是在什么时候完成的?   "ab"+"c"+"d"  是在编译期完成
    
    xx.java中代码为:String Str = new String("ab"+"c"+"d") 
    经过编译期会产生.class文件 :String str=new String("abcd")
    运行期:执行以上代码,创建2个字符串对象
    
  2. String str = new String(“abc”) 创建了几个StringObject

    2
  3. 选择题

    public class Ppvg{
            public static void main(String[] args){
                Ppvg p = new Ppvg();   int x = p.flition();   System.out.println(x); } 
            public int flition(){
                try{  FileInputStream din = new FileInputStream("Ppvg.java");
                    din.read();        
                }catch(IOException e){   System.out.println("flytwick");
                    return 99;           
                }finally{
                    System.out.println("flition");
                }           
                return -1;}}
        编译和运行上面的代码,下面对这段程序的描述中正确的是:(CA. 程序可以正常运行并且输出“flition”和99;
        B. 程序可以正常运行并且输出“flytwick“,“flition”和-1;
        C. 程序可以正常运行并且输出“flytwick”,“flition”和99;
        D. 在编译的时候会产生错误,因为flition方法会要求返回两个值 
    
  4. 以下程序是否存在问题,若存在,请指出,若没有问题,请给出输出结果

    public class Test{
      private static Integer b; //null 
      public static void main(String[] args){
        int a = 10;
        print(a);
        print(b); 
        b = a;
        print(b);
      }
      private static void print(Integer value){
        int add = value+5;  //自动拆箱将Integer类型转换为int类型   value.intValue():int
        System.out.println("add value="+add);
      }
    }
    add value=15
    出现空指针异常
    
    
  5. 选择

    public static void main(String args[]) {  B
         Thread t = new Thread() { 
           public void run() {
                  pong();
               }
             };
        t.run();   //启动线程  t.start()    t.run()则不是启动线程,而是普通方法调用
        System.out.print("ping");
    } 
    static void pong() {
        System.out.print("pong");
    }
    A pingpong 
    B pongping 
    C pingpong和pongping都有可能 
    D 都不输出
    

我是将军;我一直都在,。!

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

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

相关文章

【深度学习】实验4布置:脑部 MRI 图像分割

DL_class 学堂在线《深度学习》实验课代码报告&#xff08;其中实验1和实验6有配套PPT&#xff09;&#xff0c;授课老师为胡晓林老师。课程链接&#xff1a;https://www.xuetangx.com/training/DP080910033751/619488?channeli.area.manual_search。 持续更新中。 所有代码…

【Linux】基础IO —— 缓冲区深度剖析

&#x1f308;欢迎来到Linux专栏~~基础IO (꒪ꇴ꒪(꒪ꇴ꒪ )&#x1f423;,我是Scort目前状态&#xff1a;大三非科班啃C中&#x1f30d;博客主页&#xff1a;张小姐的猫~江湖背景快上车&#x1f698;&#xff0c;握好方向盘跟我有一起打天下嘞&#xff01;送给自己的一句鸡汤&a…

(免费分享)基于springboot论坛bbs系统

源码获取&#xff1a;关注文末gongzhonghao&#xff0c;输入010领取下载链接 开发工具IDEA ,数据库mysql5.7 技术&#xff1a;springbootjpashiroredislayui 前台截图&#xff1a; 后台截图&#xff1a; package com.qxczh.admin.service.impl;import com.qxczh.admin.servic…

关于城市旅游的HTML网页设计——中国旅游HTML+CSS+JavaScript 出游旅游主题度假酒店 计划出行网站设计

&#x1f468;‍&#x1f393;静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计&#x1f469;‍&#x1f393;&#xff0c;一般的网页作业需要融入以下知识点&#xff1a;div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…

人工智能--k近邻算法2-归一化、交叉验证、网格搜索、数据分割方法总结、两案例实现

人工智能-第三阶段-k近邻算法1-算法理论、kd树、鸢尾花数据 人工智能–k近邻算法2-归一化、交叉验证、网格搜索、数据分割方法总结、两案例实现 1.7 特征工程-特征值预处理 1.7.1 介绍 通过一些转换函数奖特征数据转换为更加适合算法模型的特征数据过程 为什么要进行归一化/…

最新最全面的Spring详解(二)——classpath扫描和组件管理

前言 本文为 【Spring】classpath扫描和组件管理 相关知识&#xff0c;下边将对Component 和及其派生出的其他注解&#xff0c;自动检测类和注册beanDifination&#xff0c;组件命名&#xff0c;为自动检测组件提供scope&#xff0c;使用过滤器自定义扫描&#xff0c;在组件中定…

【Java开发】 Spring 03:云服务器 Docker 环境下安装 MongoDB 并连接 Spring 项目实现简单 CRUD:

接下来介绍一下 NoSQL &#xff0c;相比于 Mysql 等关系型的数据库&#xff0c;NoSQL &#xff08;文档型数据库&#xff09;由于存储的数据之间无关系&#xff0c;因此具备大数据量&#xff0c;高性能等特点&#xff0c;用于解决大规模数据集合多重数据种类带来的挑战&#xf…

Aspose.OMR for .NET 22.11.X Crack

Aspose.OMR for .NET 是一个可靠且通用的编程 API&#xff0c;用于设计和自动识别手填答题卡、调查、测试、选票、SAT 考试表格、保险索赔以及受访者通过随机抽取答案来回答问题的类似文件在圆形或正方形中标记。从成百上千个表单中手动读取和汇总结果的漫长且容易出错的过程归…

深入学习函数(2)

目录 一、函数的嵌套调用和链式访问 1、嵌套调用 2、链式访问 二、函数的声明和定义 1、函数的声明 2、函数的定义 声明和定义的拓展 拆成三个文件的好处 一、函数的嵌套调用和链式访问 当代码写的越来越多时&#xff0c;就会发现&#xff0c;其实一个程序都…

Day802.JVM热点问题 -Java 性能调优实战

JVM部分热点问题 Hi&#xff0c;我是阿昌&#xff0c;今天学习JVM部分热点问题的内容。 1、字符串常量不是在java8中已经被放入到堆中了吗&#xff0c;应该不在方法区中了&#xff0c;咋一些图中还在方法区中&#xff1f; JVM 的内存模型只是一个规范&#xff0c;方法区也是…

Fiddler基础使用

目录预备知识关于web的一些基础知识实验目的实验环境实验步骤一实验步骤二实验步骤三预备知识 关于web的一些基础知识 要分析Fiddler抓取的数据包&#xff0c;我们首先要熟悉HTTP协议。HTTP即超文本传输协议&#xff0c;是一个基于请求/响应模式的、无状态的、应用层的协议&a…

【Python开发】Flask项目的组织架构

Flask项目的组织架构在大型Flask项目中&#xff0c;主要有三种常见的项目组织架构&#xff1a;功能式架构&#xff08;也就是 Bluelog 程序使用的架构&#xff09;、分区式架构和混合式架构。我们将以一个示例程序 myapp 作为示例来介绍这三种架构的特点和区别&#xff0c;这个…

教你用HTML+CSS实现百叶窗动画效果

推荐学习专栏&#xff1a; 【JavaWeb】Web前端JavaWeb学习专栏 文章目录前言1、百叶窗效果2、原理讲解3、制作百叶窗4、资源下载5、完整代码总结前言 我们浏览网页的时候总能看见一些炫酷的特效&#xff0c;比如百叶窗效果&#xff0c;本文我们就用HTMLCSS制作一个百叶窗小项…

副业该怎么选择,适合新手的四个副业项目,零基础也可操作的兼职

副业有可能有时挣得并不多&#xff0c;但它是一个改变未来的好机会。假如玩的开了&#xff0c;盈利并不比你工资少。95%的人自主创业也是从第二职业做起&#xff0c;做着干着就全职的了。 四个全员第二职业&#xff0c;新手如何做到单月9000&#xff0c;深入分析看下文&#xf…

license授权服务器

项目介绍 为软件提供授权制的使用方式&#xff0c;license申请端可以为产品生成license授权文件&#xff0c;集成了flowable工作流&#xff0c;经审批后生成license文件。 然后导入到服务端。客户端与服务端netty通信。实时判断license是否合法&#xff0c;从而使软件得到安全…

辣椒辣素修饰卵清蛋白 Capsaicin-ova,苍耳亭偶联鸡卵白蛋白 Xanthatin-ovalbumin

产品名称&#xff1a;辣椒辣素修饰卵清蛋白 英文名称&#xff1a; Capsaicin-ova 用途&#xff1a;科研 状态&#xff1a;固体/粉末/溶液 产品规格&#xff1a;1g/5g/10g 保存&#xff1a;冷藏 储藏条件&#xff1a;-20℃ 储存时间&#xff1a;1年 辣椒碱又称辣椒辣素&#xf…

抓包工具总结对照【fiddler F12 Charles wireshark】

本文主要对比fiddler Charles wireshark&#xff0c;纯手敲制作&#xff0c;动动小手点赞 文章目录抓包fidderF12开发者工具wiresharkCharles下载安装使用web抓包APP 抓包IOSAndroidCharles过滤弱网测试篡改数据修改请求数据重复发送请求Compose编辑接口服务器压力测试本地映射…

前端:Node.js遇到的错误整理

node.js当前错误汇总&#xff1a;错误1npm WARN config global --global, --local are deprecated. Use --locationglobal instead.原因&#xff1a;初步判断是node.js版本问题解决方法&#xff1a;错误2npm WARN logfile could not create logs-dir: Error: EPERM: operation …

MySQL主从复制最全教程(CentOS7 yum)

一、MySQL主从复制介绍 &#xff08;1&#xff09;MySQL数据库默认是支持主从复制的&#xff0c;不需要借助于其他的技术&#xff0c;我们只需要在数据库中简单的配置即可。 &#xff08;2&#xff09;MySQL主从复制是一个异步的复制过程&#xff0c;底层是基于Mysql数据库自…

在Docker里安装FastDFS分布式文件系统详细步骤

安装需要的软件包 yum install -y yum-utils 设置yum源 yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo 安装docker yum install -y docker-ce 查看docker版本验证安装是否成功 docker -v 启动docker systemctl start d…