Java基础(第九期):Java中的集合 ArrayList 集合的增删改查 Java实现学生信息管理系统

⚠️Java基础专栏

文章目录

    • ⚠ Java基础最后一期(第九期)到此结束
  • Java中的集合
    • 一、什么是集合
    • 二、ArrayList
        • 2.1 ArrayList介绍
        • 2.2ArrayList使用
        • 2.3 ArrayList添加
          • add()方法
          • add(index,E element)方法
        • 2.4 ArrayList删除
          • remove(index)方法
          • remove (object) 方法
        • 2.5 ArrayList修改
          • set(index ,element)方法
        • 2.6 ArrayList查询
          • get(index)方法
          • size()方法
        • 2.7 ArrayList集合的小练习
          • 练习一、
          • 练习二、
          • 练习三、
          • 练习四、
          • 练习五、
          • 练习六、
          • Array List常用方法总汇
    • 三、学生信息管理系统

⚠ ⚠ Java进阶专栏!!!!!

⚠ Java基础最后一期(第九期)到此结束

Java中的集合

一、什么是集合

  • 集合是一种容器,用来装数据,类似于数组。

与数组的区别就是,数组定义玩了,长度就固定了

  • 而集合是可变的,开发中用的最多。

二、ArrayList

2.1 ArrayList介绍

ArrayList:是一个可变数组,无参构造默认初始化一个长度为10空间,若是超出,那么会扩容到原来的1.5倍。

原理图:
在这里插入图片描述

看场景使用:

  1. 如果是固定不变的则使用数组
  2. 如果是随机的不确定的,在使用ArrayList集合存放。
2.2ArrayList使用

细节:创建StringBuilde 、 String、 ArrayList的对象,打印对象名,都没有看到地址值,都是元素的内容哦!

1. 构造方法: 
		public ArrayList() : 创建一个空的集合容器
		
		
2. 集合容器的创建细节:
		ArrayList list = new ArrayList();
		现象;可以添加任意数据类型
		弊端:数据不严谨

使用格式:

        // ArrayList的使用
        ArrayList<String> list = new ArrayList<>();
        list.add("泛型限定后只能添加字符串");
        System.out.println(list);   // [泛型限定后只能添加字符串]
  • <数据类型>: 里面写数据类型,jdk7以上在后面的<>中可以为空。

  • 泛型<>:

    <>:中不能出现基本数据类型,想要写其基本数据类型,就得使用包装类(首字母大写就会有提示)

集合练习:

        // 1. 创建一个集合容器,内部存储 11.1 22.2 33.3
        ArrayList<Double> num = new ArrayList<>();
        num.add(11.1);
        num.add(22.2);
        num.add(33.3);
        System.out.println(num);

        // 2. 创建一个集合容器,内部存储 张三,李四,王五
        ArrayList<String> string = new ArrayList<>();
        string.add("张三");
        string.add("李四");
        string.add("王五");
        System.out.println(string);
  • 泛型非常强势的。
2.3 ArrayList添加
add()方法
  • 将指定的元素添加到集合的尾部。
  • 返回值为boolean类型(永远为true)。
add(index,E element)方法
  • 将元素插入到指定的位置上(插队)
  • 返回值为空,有索引必定会出现越界的关系
        // add()无参方法
        ArrayList<String> list = new ArrayList<>();
        list.add("liu");
        list.add("jin");
        list.add("tao");
        System.out.println(list);

        // add(index, E element) 带参方法(插入添加)
        list.add(2, "插入");
        list.add(4, "尾部添加");
        System.out.println(list);
  • 记住带参方法添加不能越界
2.4 ArrayList删除
remove(index)方法
  • 根据索引号做删除,返回值为被删除的元素。
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        // remove(index)删除方法
        System.out.println(list); // [张三, 李四, 王五]
        String result = list.remove(1);
        System.out.println(result);   // 李四
        System.out.println(list);   // [张三, 王五]
remove (object) 方法
  • 根据指定元素删除,返回值为是否成功(boolean类型)
       // remove(object)删除方法
        System.out.println(list);   // [张三, 王五]
        boolean remove = list.remove("王五");
        System.out.println(remove);     // true
        System.out.println(list);    // [张三]

2.5 ArrayList修改
set(index ,element)方法
  • 修改指定索引号的元素值,返回被覆盖(修改)的值。
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        // set(index , new element)方法
        String result = list.set(2, "赵六");
        System.out.println(result);  // 王五
        System.out.println(list);   // [张三, 李四, 赵六]
2.6 ArrayList查询
get(index)方法
  • 根据索引号获取集合元素,返回索引对应的元素
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        // 查询(index)方法
        String result = list.get(2);
        System.out.println(result); // 王五
size()方法
  • 返回集合中元素的个数
        // 查询集合长度方法
        int len = list.size();
        System.out.println(len);    // 3

以上就是集合ArrayList的常用过的增删改查操作了。

2.7 ArrayList集合的小练习
练习一、
需求:创建一个类型为字符串类型的集合,然后取出每一个元素
        ArrayList<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        for (int i = 0; i < list.size(); i++){
            System.out.println(list.get(i));
        }
练习二、
需求:定义一个字符串类型的集合,然后对字符串长度为4的元素做打印。
        ArrayList<String> list = new ArrayList<>();
        list.add("12");
        list.add("123");
        list.add("1234");
        list.add("1212");
        list.add("1213");
        list.add("1213213");
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if (s.length() == 4) {
                System.out.println(s);
            }
        }
练习三、
需求:创建一个存储学生对象的集合,存储三个学生对象,并且打印年龄低于18岁的学生信息

Student类

package com.liujintao.domain;

public class Student {
    String name;
    int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }
}

测试类文件

package com.liujintao.test;

import com.liujintao.domain.Student;

import java.util.ArrayList;

public class ArrayListText02 {
    public static void main(String[] args) {
        Student stu1 = new Student("张三", 24);
        Student stu2 = new Student("李四", 8);
        Student stu3 = new Student("王五", 15);

        // 创建学生集合
        ArrayList<Student> list = new ArrayList<>();
        list.add(stu1);
        list.add(stu2);
        list.add(stu3);

        // 输出年龄小于18岁的学生信息
        for (int i = 0; i < list.size(); i++) {
            Student age = list.get(i);
            if (age.getAge() == 18) {
                System.out.println(age.getName() +"---" + age.getAge());
            }
        }
    }

}

练习四、
需求:
    创建一个存储学生对象的集合,存储3个学生对对象,使用程序实现在控制台遍历该集合,学生的姓名和年龄来自于键盘录入。

测试类:

package com.liujintao.test;

import com.liujintao.domain.Student;

import java.util.ArrayList;
import java.util.Scanner;

public class ArrayListText03 {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        for (int i = 1; i <= 3; i++) {
            System.out.println("请输入第" + i + "个学生的信息");
            addStudent(list);
        }

        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getName() + "---" + stu.getAge());
        }
    }


    public static void addStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        System.out.println("请输入学生年龄:");
        int age = sc.nextInt();
        Student stu = new Student(name, age);
        list.add(stu);
    }
}

学生类:

package com.liujintao.domain;

public class Student {
    String name;
    int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }
}

请输入第1个学生的信息
请输入学生姓名:
张三
请输入学生年龄:
23
请输入第2个学生的信息
请输入学生姓名:
李四
请输入学生年龄:
24
请输入第3个学生的信息
请输入学生姓名:
王五
请输入学生年龄:
25
张三—23
李四—24
王五—25

练习五、
需求:创建一个存储String的集合,内部存储(test, 张三, test,test, 李四)字符串
   删除所有的test字符串,删除后,将集合剩余元素打印在控制台
  • 注意点,ArrayList集合是自动收缩的,删除了,会补齐,印象影响引用的指向。

  • 建议,正序清除记得–

  • 反序正常遍历即可。

package com.liujintao.test;

import java.util.ArrayList;

public class ArrayListTest04 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("test");
        list.add("张三");
        list.add("李四");
        list.add("test");
        list.add("test");
        // 方法一:正序遍历处理
        method1(list);
        // 方法二:倒序遍历处理
        method2(list);
    }

    private static void method2(ArrayList<String> list) {
        for (int i = list.size() - 1; i >= 0; i--) {
            String s = list.get(i);
            if ("test".equals(s)) {
                list.remove(i);
            }
        }
        System.out.println(list);
    }

    private static void method1(ArrayList<String> list) {
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if ("test".equals(s)) {
                list.remove(i);
                i--;
            }
        }
        System.out.println(list);
    }
}

练习六、

需求: 定义一个方法,方法接受一个集合对象(泛型为Student)

方法内部将年龄低于 18 的学生对象找出

并存入新集合对象,方法返回新集合

package com.liujintao.test;

import com.liujintao.domain.Student;

import java.util.ArrayList;
import java.util.Scanner;

public class ArrayListTest05 {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();
        // 初始化JavaBean数据
        list.add(new Student("张三", 13));
        list.add(new Student("李四", 14));
        list.add(new Student("王五", 24));
        list.add(new Student("赵六", 15));
        list.add(new Student("小明", 23));

        ArrayList<Student> result = handleFilter(list);
        // 遍历打印
        for (Student stu : result) {
            System.out.println(stu.getName() + " --" + stu.getAge());
        }
    }

    /**
     * 过滤学生数据
     * @param list
     * @return ArrayList<Student> list
     */
    private static ArrayList<Student> handleFilter(ArrayList<Student> list) {
        ArrayList<Student> newList = new ArrayList<>();
        for (Student stu : list) {
            if (stu.getAge() < 18) {
                newList.add(stu);
            }
        }
        return newList;
    }


}

张三 --13
李四 --14
赵六 --15

Array List常用方法总汇

在这里插入图片描述

三、学生信息管理系统

需求:完成学生的信息管理(增删改查功能的实现)

根据菜单栏(完成相应的功能);

            System.out.println("1   添加学生");
            System.out.println("2   删除学生");
            System.out.println("3   修改学生");
            System.out.println("4   查看学生");
            System.out.println("5   退出");

业务逻辑类:

package com.liujintao.priject;

import java.util.ArrayList;
import java.util.Scanner;

public class manageSystem {
    public static void main(String [] args) {
        /**
         * 启动
         */
        start();


    }

    /**
     * 系统入口
     */
    public static void start() {
        // 学生信息库
        ArrayList<Student> list = new ArrayList<>();
        while (true) {
            System.out.println("-----------------欢迎来到学生管理系统-----------------");
            System.out.println("1   添加学生");
            System.out.println("2   删除学生");
            System.out.println("3   修改学生");
            System.out.println("4   查看学生");
            System.out.println("5   退出");

            System.out.println("请输入您的选择:");
            Scanner sc = new Scanner(System.in);
            sc = new Scanner(System.in);
            int num = sc.nextInt();
            switch (num) {
                case 1:
                    addStudent(list);
                    break;
                case 2:
                    handleDelete(list);
                    break;
                case 3:
                    changeStudent(list);
                    break;
                case 4:
                    queryStudent(list);
                    break;
                case 5:
                    System.out.println("退出");
                    System.exit(0);
                default:
                    System.out.println("业务暂未开通,请确认后重试!");
                    break;
            }

        }

    }

    /**
     * 添加学生信息
     * @param list
     */
    public static void addStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生学号");
        String id = sc.next();
        // 下标都不存在,则视为学生信息不存在,放行
        int result = getIndex(id, list);
        if (result == -1) {
            System.out.println("请输入学生姓名");
            String name = sc.next();
            System.out.println("请输入学生年龄");
            int age = sc.nextInt();
            System.out.println("请输入学生出生日期");
            String datebirth = sc.next();
            Student stu = new Student(id, name, age, datebirth);
            list.add(stu);
            System.out.println("添加成功!");
        } else {
            System.out.println("该信息已经被使用");
        }

    }

    /**
     * 删除学生信息
     */
    public static void handleDelete (ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入需要删除的学生学号:");
        String inputId = sc.next();
        // 根据学号拿到学生对象的下标
        int id = getIndex(inputId, list);
        for (int i = 0; i < list.size(); i++) {
            if (id == -1) {
                System.out.println("无法删除不存在的学生信息!");
                break;
            } else {
                list.remove(id);
                System.out.println("删除成功!");
            }
        }
    }

    /**
     * 修改学生信息
     */
    public static void changeStudent(ArrayList<Student> list) {
        // 拿到需要删除的学生学号,然后再得到下标处理
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您需要修改的学生编号:");
        String inputId = sc.next();
        // 调用方法处理得到下标
        int index = getIndex(inputId, list);
        if (index != -1) {
            System.out.println("请输入修改后的姓名:");
            String changeName = sc.next();
            System.out.println("请输入修改后的年龄:");
            int changeAge = sc.nextInt();
            System.out.println("请输入修改后的出生日期:");
            String changeDate = sc.next();
            // 将新的值覆盖
            list.get(index).setId(inputId);
            list.get(index).setName(changeName);
            list.get(index).setAge(changeAge);
            list.get(index).setDatebirth(changeDate);
            System.out.println("修改成功!");
        } else {
            System.out.println("您需要修改的学生信息不存在!");
        }
    }

    /**
     * 查询学生信息
     */
    public static void queryStudent (ArrayList<Student> list) {
        System.out.println("学号\t\t\t\t姓名\t年龄\t出生日期");
        for (Student stu : list) {
            System.out.println(stu.getId() + stu.getName() + stu.getAge() + stu.getDatebirth());
        }
    }

    /**
     * 获取学生在信息库的下标(根据id来判断)
     */
    public static int getIndex(String id, ArrayList<Student> list) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                return i;
            }
        }
        return -1;
    }
}

javaBean数据类:

package com.liujintao.priject;
class Student {
    /**
     * 成员方法学生信息
     * id: 学号
     * name:姓名
     * age:年龄
     * datebirth:出生日期
     */
    private String id;
    private String name;
    private int age;
    private String datebirth;

    /**
     * 初始化数据使用构造器
     */
    public Student() {
    }

    public Student(String id, String name, int age, String datebirth) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.datebirth = datebirth;
    }

    /**
     * 获取
     * @return id
     */
    public String getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return datebirth
     */
    public String getDatebirth() {
        return datebirth;
    }

    /**
     * 设置
     * @param datebirth
     */
    public void setDatebirth(String datebirth) {
        this.datebirth = datebirth;
    }

}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4.28每日一题(二重积分比较大小:被积函数的大小、正负性、积分区间奇偶性)

一般比较大小的题目我们不需要把结果全部计算出来 &#xff0c;而是通过奇偶性或者被积函数的大小或大于0、等于0、小于0等方法判断比较

PostgreSQL 分区表插入数据及报错:子表明明存在却报不存在以及column “xxx“ does not exist 解决方法

PostgreSQL 分区表插入数据及报错&#xff1a;子表明明存在却报不存在以及column “xxx“ does not exist 解决方法 问题1. 分区表需要先创建子表在插入&#xff0c;创建子表立马插入后可能会报错子表不存在&#xff1b;解决&#xff1a; 创建子表及索引后&#xff0c;sleep10毫…

Linux的基本指令 ( 一 )

目录 前言 Linux基本指令 快速认识五个指令 ls指令 补充内容 pwd指令 补充内容 cd指令 补充内容 重新认识指令 指令的本质 which指令 alias指令 最后 一个文件的三种时间 tree指令及安装 tree指令 前言 关于Linux操作系统的桌面&#xff0c;在学校教学中我们…

【蓝桥杯】刷题

刷题网站 记录总结刷题过程中遇到的一些问题 1、最大公约数与最小公倍数 a,bmap(int,input().split())sa*bwhile a%b:a,bb,a%bprint(b,s//b)2.迭代法求平方根(题号1021) #include<stdio.h> #include<math.h> int main() {double x11.0,x2;int a;scanf("%d&…

FFmpeg零基础学习(一)——初步介绍与环境搭建

目录 前言正文一、开发环境二、搭建环境三、测试代码四、调用库的介绍End、遇到的问题2、Qt 在线安装容易报错&#xff0c;断开问题1、在线安装QMaintainTool很慢2、Qt5.15 无法调试FFmpeg 参考 前言 FFmpeg是一个开源的跨平台多媒体处理框架&#xff0c;它包含了一组用于处理…

MIPI 打怪升级之DSI篇

MIPI 打怪升级之DSI篇 目录 1 Overview2 DSI Mode 2.1 Video 模式2.2 Command 模式3 DSI Physical Layer 3.1 数据流控3.2 双向性3.3 Video Mode Interfaces3.4 Command Mode Interfaces3.5 Clock4 多通道管理 4.1 通道数匹配4.2 线上数据分布5 DSI 协议 5.1 包格式 5.1.1 短包…

上新!2023年汉字小达人市级比赛在线模拟题增加2个刷题试卷

各位小学三年级到五年级的上海学霸孩子们&#xff0c;刚刚结束了上海小学生古诗文大会的复赛&#xff0c;就紧锣密鼓地全身心投入到上海小学生汉字小达人的市级比赛的备赛中了。 为了助各位孩子一臂之力&#xff0c;我把在线模拟题进行了更新&#xff0c;新增了两个可以刷题的试…

SparkSQL之Optimized LogicalPlan生成过程

经过Analyzer的处理&#xff0c;Unresolved LogicalPlan已经解析成为Analyzed LogicalPlan。Analyzed LogicalPlan中自底向上节点分别对应Relation、Subquery、Filter和Project算子。   Analyzed LogicalPlan基本上是根据Unresolved LogicalPlan一对一转换过来的&#xff0c;…

细胞级浮游藻类智能检测系统

产品信息 新一代浮游藻类智能检测系统问世&#xff01;英视江河首次将藻类检测精度提升到细胞级&#xff01;英视江河致力于新一代浮游生物的识别、计数。特征是群体藻类和群体种个体均精准检测&#xff01;目前设备已在山东、宁夏、内蒙多地实际应用。 郑州英视江河生态环境科…

SpringBoot——配置及原理

优质博文&#xff1a;IT-BLOG-CN 一、Spring Boot全局配置文件 application.properties与application.yml配置文件的作用&#xff1a;可以覆盖SpringBoot配置的默认值。 ◀ YML&#xff08;is not a Markup Language&#xff1a;不仅仅是一个标记语言&#xff09;&#xff1…

Android修行手册-ViewPager定制页面切换以及实现原理剖析

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

论文阅读——Prophet(cvpr2023)

一、Framework 这个模型分为两阶段&#xff1a;一是答案启发生成阶段&#xff08;answer heuristics generation stage&#xff09;&#xff0c;即在一个基于知识的VQA数据集上训练一个普通的VQA模型&#xff0c;产生两种类型的答案启发&#xff0c;答案候选列表和答案例子&am…

强化学习,快速入门与基于python实现一个简单例子(可直接运行)

文章目录 一、什么是“强化学习”二、强化学习包括的组成部分二、Q-Learning算法三、迷宫-强化学习-Q-Learning算法的实现全部代码&#xff08;复制可用&#xff09;可用状态空间检查是否超出边界epsilon 的含义更新方程 总结 一、什么是“强化学习” 本文要记录的大概内容&am…

图形编辑器开发:缩放和旋转控制点

大家好&#xff0c;我是前端西瓜哥。好久没写图形编辑器开发的文章了。 今天来讲讲控制点。它是图形编辑器的不可缺少的基础功能。 控制点是吸附在图形上的一些小矩形和圆形点击区域&#xff0c;在控制点上拖拽鼠标&#xff0c;能够实时对被选中进行属性的更新。 比如使用旋…

LED面板显示屏驱动芯片

一、基本概述 TM1638是一种带键盘扫描接口的LED&#xff08;发光二极管显示器&#xff09;驱动控制专用IC,内部集成有MCU数字接口、数据锁存器、LED驱动、键盘扫描等电路。本产品质量可靠、稳定性好、抗干扰能力强。 二、主要应用场合 主要适用于家电设备(智能热水器、微波炉…

Hibernate 脏检查和刷新缓存机制

刷新缓存: Session是Hibernate向应用程序提供的操作数据库的主要接口,它提供了基本的保存,更新,删除和加载java对象的方法,Session具有一个缓存,可以管理和追踪所有持久化对象,对象和数据库中的相关记录对应,在某些时间点,Session会根据缓存中对象的变化来执行相关SQL语句,将对…

杂货铺 | Windows系统上解压缩tgz文件

文章目录 &#x1f4da;快速终端打开实现 & 解压缩实现步骤&#x1f4da;环境变量的一般配置步骤 & 问题解决思路 &#x1f4da;快速终端打开实现 & 解压缩实现步骤 将对应的tgz文件放入对应的文件夹。快速在指定文件夹下打开终端 打开对应的路径 双击地址栏 然后…

Cisco Packet Tracer配置命令——路由器篇

路由基础 路由器用于互联两个或多个网络&#xff0c;具有两项功能&#xff1a;为要转发的数据包选择最佳路径以及将数据包交换到正确的端口&#xff0c;概括为路由选择和分组转发。 路由选择 路由选择就是路由器根据目的IP地址的网络地址部分&#xff0c;通过路由选择算法确…

图的建立基本操作

#include <stdio.h> #include <stdlib.h> #include <stdbool.h> // 添加头文件#define MAX_VERTEX_NUM 100 //图中最大顶点数//struct ArcNode* nextarc; //ArcNode* firstarc; //这两个是很有必要的&#xff0c;如果你没有这两个指针&#xff0c;你就无法判…

力扣114. 二叉树展开为链表(java,用树模拟链表)

Problem: 114. 二叉树展开为链表 文章目录 题目描述思路解题方法复杂度Code 题目描述 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 1.展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左…