Java集合基础

news2024/12/27 18:30:01

文章目录

  • 集合基础
    • 一、集合介绍
      • 1. 什么是集合?
      • 2. 集合类型
      • 3. ArrayList 长度可变原理
      • 4. 集合和数组的使用选择
    • 二、ArrayList 集合快速入门
      • 集合创建语句
      • 泛型(<>)
    • 三、集合常用成员方法
      • 1. 增加元素
      • 2. 删除元素
      • 3. 修改元素
      • 4. 查找数据
    • 四、集合遍历
      • 1. 集合存储字符串并遍历
      • 2. 集合存储学生对象并遍历
      • 3. 键盘录入学生信息到集合
    • 五、集合删除数据和筛选
      • 1. 集合删除元素
      • 2. 集合元素筛选
    • 六、学生管理系统
      • 1. 菜单搭建
      • 2. Student学生类
      • 3. 实现查看功能
      • 4. 实现根据ID获取索引功能
      • 5. 实现删除功能
      • 6. 实现修改功能
      • 7. 实现添加功能
      • 8. 完整代码

集合基础

一、集合介绍

1. 什么是集合?

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

但是我们有数组,为啥还学习集合?

数组定义完成并启动后,长度就固定了。

image-20230130104259822

集合大小可变,开发中用的更多。

image-20230130104315402

2. 集合类型

image-20230130105007652

这里我们先学习 ArrayList 集合。

3. ArrayList 长度可变原理

  1. 当创建 ArrayList 集合容器的时候, 底层会存在一个长度为10个大小的空数组

image-20230130105147133

当元素超过10个时,那该怎么办?

image-20230130105602080

  1. 扩容原数组 1.5 倍大小的新数组

image-20230130105713063

  1. 将原数组数据,拷贝到新数组中

image-20230130105801837

  1. 将新元素添加到新数组

image-20230130105951464

4. 集合和数组的使用选择

数组: 存储的元素个数固定不变

集合: 存储的元素个数经常发生改变

二、ArrayList 集合快速入门

集合创建语句

语法:

ArrayList list = new ArrayList();

现象:可以添加任意类型数据

弊端:数据不够严谨

使用泛型来限制集合中的数据类型。

泛型(<>)

使用泛型,可以对集合中储存的数据进行类型限制。

语法:

ArrayList <String> list = new ArrayList<String>();ArrayList <String> list = new ArrayList<>();

JDK7之后,等号右边的括号中可以不写数据类型。

泛型中不允许编写基本数据类型,但如果我们想在集合中存储 整数、小数、字符…这些数据,怎么办呢?

使用基本数据类型所对应的包装类:

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

记忆方法:主要记住 int 和 char 所对应的包装类就可以了,其他的都是首字母大写。

下面通过一个案例来快速了解一下 ArrayList 集合:

package cn.edu.hgu.list;

import java.util.ArrayList;

public class ArrayListDemo1 {
    public static void main(String[] args) {
        //步骤1:创建一个集合容器,内部存储 11.1 22.2 33.3
        ArrayList<Double> list1 = new ArrayList<>();
        list1.add(11.1);
        list1.add(22.2);
        list1.add(33.3);

        //步骤2:创建一个集合容器,内部储存 张三,李四,王五
        ArrayList<String> list2 = new ArrayList<>();
        list2.add("张三");
        list2.add("李四");
        list2.add("王五");

        //步骤3:在控制台展示两个集合中的元素
        System.out.println(list1);
        System.out.println(list2);
    }
}

输出结果为:

image-20230128220454416

细节:创建 String,StringBuilder,ArrayList类的对象,打印对象名,都没有看到地址,而是元素内容

三、集合常用成员方法

方法名说明
public boolean add(E e)将指定的元素添加到此集合的末尾
public void add(int index,E element)在此集合中的指定位置插入指定的元素
public E get(int index)返回指定索引处的元素
public int size()返回集合中的元素的个数
public E remove(int index)删除指定索引处的元素,返回被删除的元素
public boolean remove(Object o)删除指定的元素,返回删除是否成功
public E set(int index,E element)修改指定索引处的元素,返回被修改的元素

1. 增加元素

public boolean add(E e):将指定的元素添加到此列表的尾部
public void add(int index,E element):在指定索引位置,添加对应的元素(插队)

我们来看一下数组的增加操作:

package cn.edu.hgu.list;

import java.util.ArrayList;

public class ArrayListDemo2 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        list.add("张三1");
        list.add("张三2");
        list.add("张三3");

        list.add(0, "张三4");

        System.out.println(list);

    }

}

输出结果为:

image-20230130133255412

2. 删除元素

public E remove(int index):根据索引做删除,返回被删除掉的元素
public boolean remove(Object o):根据元素做删除,返回是否删除成功的状态

我们来看一下删除实例:

package cn.edu.hgu.list;

import java.util.ArrayList;

public class ArrayListDemo2 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        list.add("张三1");
        list.add("张三2");
        list.add("张三3");

        System.out.println(list);

        list.remove("张三3");

        System.out.println(list);

        list.remove(1);

        System.out.println(list);

    }

}

输出结果为:

image-20230130133732533

3. 修改元素

public E set(int index,E element):修改指定索引位置,为对应的元素,返回被覆盖掉的元素

我们来实现一下元素的修改:

package cn.edu.hgu.list;

import java.util.ArrayList;

public class ArrayListDemo2 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        list.add("张三1");
        list.add("张三2");
        list.add("张三3");

        System.out.println(list);

        list.set(0,"张三4");

        System.out.println(list);

    }

}

输出结果为:

image-20230130163252519

4. 查找数据

public E get(int index):根据索引,获取集合中的元素
public int size():返回集合中元素的个数

可以使用 for 循环配合两个方法实现集合遍历:

package cn.edu.hgu.list;

import java.util.ArrayList;

public class ArrayListDemo2 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        list.add("张三1");
        list.add("张三2");
        list.add("张三3");

        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }
        
    }

}

输出结果为:

image-20230130163947864

四、集合遍历

1. 集合存储字符串并遍历

需求:创建一个存储字符串的集合,内部存储3个字符串元素, 使用程序实现在控制台遍历该集合

代码实现:

package cn.edu.hgu.test;

import java.util.ArrayList;

public class ArrayListTest1 {


    public static void main(String[] args) {
        ArrayListTraversal1();
        System.out.println("----------------");
        ArrayListTraversal2();
    }
    /*
        需求:创建一个存储字符串的集合,内部存储字符串元素
            姬霓太美,钢门吹雪,香翅捞饭,李四,甄妮玛黛妗,张三
            使用程序实现在控制台遍历该集合,将4个字的人名,打印在控制台
     */

    private static void ArrayListTraversal2() {
        ArrayList<String> list = new ArrayList<>();

        list.add("姬霓太美");
        list.add("钢门吹雪");
        list.add("香翅捞饭");
        list.add("姬霓太美");
        list.add("李四");
        list.add("甄妮玛黛妗");
        list.add("张三");

        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if (s.length() == 4) {
                System.out.println(s);
            }
        }
    }

    /*
            需求:创建一个储存字符串的集合,内部存储3个字符串元素,使用程序实现在控制台遍历该集合
         */
    private static void ArrayListTraversal1() {
        ArrayList<String> list = new ArrayList<>();

        list.add("张三");
        list.add("李四");
        list.add("王五");

        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }
    }
}

输出结果为:

image-20230129095838784

2. 集合存储学生对象并遍历

需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

准备学生类:

package cn.edu.hgu.domain;

public class Student {
    private String name;
    private 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 cn.edu.hgu.test;

import cn.edu.hgu.domain.Student;

import java.util.ArrayList;

public class ArrayListTest2 {
    /*
        需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
     */
    public static void main(String[] args) {
        Student stu1 = new Student("张三", 23);
        Student stu2 = new Student("李四", 14);
        Student stu3 = new Student("王五", 25);

        ArrayList<Student> list = new ArrayList<>();

        list.add(stu1);
        list.add(stu2);
        list.add(stu3);

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

    }
}

输出结果为:

image-20230129101555990

对需求进行修改,在控制台展示出年龄低于18岁的学生信息:

package cn.edu.hgu.test;

import cn.edu.hgu.domain.Student;

import java.util.ArrayList;

public class ArrayListTest2 {
    /*
        需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
                在控制台,展示出年龄低于18岁的学生信息
     */
    public static void main(String[] args) {
        Student stu1 = new Student("张三", 23);
        Student stu2 = new Student("李四", 14);
        Student stu3 = new Student("王五", 25);

        ArrayList<Student> list = new ArrayList<>();

        list.add(stu1);
        list.add(stu2);
        list.add(stu3);

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

输出结果为:

image-20230129102533249

3. 键盘录入学生信息到集合

需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

​ 学生的姓名和年龄来自于键盘录入

image-20230129111141830

image-20230129111137084

五、集合删除数据和筛选

1. 集合删除元素

需求:创建一个存储String的集合,内部存储(test,张三,李四,test,test)字符串

​ 删除所有的test字符串,删除后,将集合剩余元素打印在控制台

代码实现:

package cn.edu.hgu.test;

import java.util.ArrayList;

public class ArrayListTest4 {
    /*
        需求:创建一个存储String的集合,内部存储(test,张三,李四,test,test)字符串
             删除所有的test字符串,删除后,将集合剩余元素打印在控制台
     */
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("test");
        list.add("张三");
        list.add("李四");
        list.add("test");
        list.add("test");

        ArrayListRemove2(list);

        System.out.println(list);
    }

    /*
        实现倒序删除
     */
    private static void ArrayListRemove2(ArrayList<String> list) {
        for (int i = list.size() - 1; i >= 0; i--) {
            String s = list.get(i);
            if ("test".equals(s)) {
                list.remove(i);
            }
        }
    }

    /*
        实现正序删除
     */
    private static void ArrayListRemove1(ArrayList<String> list) {
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            if ("test".equals(s)) {
                list.remove(i);
                i--;//解决要删除的内容相邻时,少删除
            }
        }
    }
}

输出结果为:[张三, 李四]

总结:在遍历集合的过程中,有删除操作

  1. 正序遍历:不要忘记 --操作
  2. 倒序遍历:不需要 --操作

2. 集合元素筛选

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

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

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

代码实现:

package cn.edu.hgu.test;

import cn.edu.hgu.domain.Student;

import java.util.ArrayList;

public class ArrayListTest5 {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();

        list.add(new Student("张三", 23));
        list.add(new Student("李四", 14));
        list.add(new Student("王五", 15));

        ArrayList<Student> newList = filter(list);

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

    private static ArrayList<Student> filter(ArrayList<Student> list) {
        //1.创建新的集合容器,准备存储筛选后的学生对象
        ArrayList<Student> newList = new ArrayList<>();

        //2.遍历原集合
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            //3.筛选
            if (stu.getAge() < 18) {
                //4.将满足要求的学生对象,存入新集合
                newList.add(stu);
            }
        }
        return newList;
    }
}

输出结果为:

image-20230129194530094

六、学生管理系统

image-20230130171313223

1. 菜单搭建

package cn.edu.hgu.test;

import cn.edu.hgu.domain.Student;

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

public class Test {
    public static void main(String[] args) {
        // 增删改查都是围绕着这个进行操作
        ArrayList<Student> list = new ArrayList<>();

        Scanner sc = new Scanner(System.in);

        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("请输入您的选择:");

            int choice = sc.nextInt();

            switch (choice) {
                case 1:
                    System.out.println("添加学生");
                    break;
                case 2:
                    System.out.println("删除学生");
                    break;
                case 3:
                    System.out.println("修改学生");
                    break;
                case 4:
                    System.out.println("查看学生");
                    break;
                case 5:
                    System.out.println("感谢您的使用,再见");
                    System.exit(0);//终止正在运行的JVM虚拟机
                    break;
                default:
                    System.out.println("您的输入有误,请检查");
                    break;
            }
        }

    }

}

2. Student学生类

定义 Student学生类(学号、姓名、年龄、生日)

package cn.edu.hgu.domain;

public class Student {
    private String id;
    private String name;
    private int age;
    private String birthday;


    public Student() {
    }

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

    /**
     * 获取
     *
     * @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 birthday
     */
    public String getBirthday() {
        return birthday;
    }

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

}

3. 实现查看功能

我们先实现最简单的查看功能,由于没有实现添加功能,这里先使用固定数据:

package cn.edu.hgu.test;

import cn.edu.hgu.domain.Student;

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

public class Test {
    public static void main(String[] args) {
        Student stu1 = new Student("heima001", "张三", 23, "1999-11-11");
        Student stu2 = new Student("heima002", "李四", 24, "1999-11-12");
        Student stu3 = new Student("heima003", "王五", 25, "1999-12-11");

        // 增删改查都是围绕着这个进行操作
        ArrayList<Student> list = new ArrayList<>();

        list.add(stu1);
        list.add(stu2);
        list.add(stu3);

        Scanner sc = new Scanner(System.in);

        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("请输入您的选择:");

            int choice = sc.nextInt();

            switch (choice) {
                case 1:
                    System.out.println("添加学生");
                    break;
                case 2:
                    System.out.println("删除学生");
                    break;
                case 3:
                    System.out.println("修改学生");
                    break;
                case 4:
                    queryStudentInfos(list);
                    break;
                case 5:
                    System.out.println("感谢您的使用,再见");
                    System.exit(0);//终止正在运行的JVM虚拟机
                    break;
                default:
                    System.out.println("您的输入有误,请检查");
                    break;
            }
        }


    }

    /**
     * 此方法用于查看学生
     */
    private static void queryStudentInfos(ArrayList<Student> list) {
        if (list.size() == 0) {
            System.out.println("查无信息,请添加后重试!");
        } else {
            System.out.println("学号\t\t\t姓名\t年龄\t生日");
            for (int i = 0; i < list.size(); i++) {
                Student stu = list.get(i);
                System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getBirthday());
            }
        }
    }
}

输出结果为:

image-20230129214407703

image-20230129214412680

查看功能首先要判断集合中是否存在元素,如果不存在打印查无信息,请添加后重试!,否则打印集合中的元素信息。

4. 实现根据ID获取索引功能

删除功能和修改功能都是基于ID 来实现的,下面我们来实现这个方法:

package cn.edu.hgu.demo;

import cn.edu.hgu.domain.Student;

import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args) {
        Student stu1 = new Student("heima001", "张三", 23, "1999-11-11");
        Student stu2 = new Student("heima002", "李四", 24, "1999-11-12");
        Student stu3 = new Student("heima003", "王五", 25, "1999-12-11");

        ArrayList<Student> list = new ArrayList<>();

        list.add(stu1);
        list.add(stu2);
        list.add(stu3);

        String id = "heima001";

        int index = getIndex(id, list);
        System.out.println(index);
    }

    private static int getIndex(String id, ArrayList<Student> list) {
        //1.遍历集合,获取到每一个学生对象
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            //2.比对
            if (id.equals(stu.getId())) {
                //3.找到了,返回正确的索引
                return i;
            }
        }
        //4.没找到,返回-1
        return -1;
    }
}

输出结果为:0

说明方法没有问题,将方法复制到 Test 类中。

5. 实现删除功能

private static void deleteStudentById(ArrayList<Student> list) {
        //1.键盘录入要删除的学号
        Scanner sc = new Scanner(System.in);
        System.out.println("输入您要删除的学生学号:");
        String id = sc.next();
        //2.调用getIndex方法,查找学号在集合中的索引
        int index = getIndex(id, list);
        //3.判断方法的返回值是否为-1
        if (index == -1) {
            //3.1 是-1,说明学号不存在,给出错误提示
            System.out.println("查无此人,删除失败!");
        } else {
            //3.2 不是-1,说明学号存在,根据索引做删除
            list.remove(index);
            System.out.println("删除成功!");
        }

    }

输出结果为:

image-20230130085513226

image-20230130085505803

6. 实现修改功能

private static void updateStudentInfoById(ArrayList<Student> list) {
        //1.键盘录入要修改的学生学号
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的学生学号:");
        String updateId = sc.next();
        //2.调用 getIndex 方法查找学号对应的索引
        int index = getIndex(updateId, list);
        //3.如果学号不存在,给出错误提示
        if (index == -1) {
            System.out.println("查无此人,修改失败!");
        } else {
            //4.如果学号存在,录入新的学生信息,完成修改
            System.out.println("请输入新的学生姓名:");
            String name = sc.next();
            System.out.println("请输入新的学生年龄:");
            int age = sc.nextInt();
            System.out.println("请输入新的学生生日:");
            String birthday = sc.next();

            //将新录入的学生信息,封装为学生对象
            Student stu = new Student(updateId, name, age, birthday);

            list.set(index,stu);
        }

    }

输出结果:

image-20230130102755598

image-20230130102826737

7. 实现添加功能

private static void addStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生学号:");

        String id = "";

        while (true) {
            id = sc.next();

            int index = getIndex(id, list);

            if (index == -1) {
                break;
            } else {
                System.out.println("您输入的学号已被占用,请重新输入!");
            }
        }

        System.out.println("请输入学生姓名:");
        String name = sc.next();
        System.out.println("请输入学生年龄:");
        int age = sc.nextInt();
        System.out.println("请输入学生生日:");
        String birthday = sc.next();

        Student stu = new Student(id, name, age, birthday);

        list.add(stu);
    }

输出结果为:

image-20230130103906895

8. 完整代码

package cn.edu.hgu.test;

import cn.edu.hgu.domain.Student;

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

public class Test {
    public static void main(String[] args) {

        // 增删改查都是围绕着这个进行操作
        ArrayList<Student> list = new ArrayList<>();

        Scanner sc = new Scanner(System.in);

        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("请输入您的选择:");

            int choice = sc.nextInt();

            switch (choice) {
                case 1:
                    addStudent(list);
                    break;
                case 2:
                    deleteStudentInfoById(list);
                    break;
                case 3:
                    updateStudentInfoById(list);
                    break;
                case 4:
                    queryStudentInfos(list);
                    break;
                case 5:
                    System.out.println("感谢您的使用,再见");
                    System.exit(0);//终止正在运行的JVM虚拟机
                    break;
                default:
                    System.out.println("您的输入有误,请检查");
                    break;
            }
        }


    }

    /**
     * 此方法用于键盘录入学生信息,封装学生对象,存入集合
     */
    private static void addStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生学号:");

        String id = "";

        while (true) {
            id = sc.next();

            int index = getIndex(id, list);

            if (index == -1) {
                break;
            } else {
                System.out.println("您输入的学号已被占用,请重新输入!");
            }
        }

        System.out.println("请输入学生姓名:");
        String name = sc.next();
        System.out.println("请输入学生年龄:");
        int age = sc.nextInt();
        System.out.println("请输入学生生日:");
        String birthday = sc.next();

        Student stu = new Student(id, name, age, birthday);

        list.add(stu);
    }

    /**
     * 根据学号修改集合中的学生信息
     */
    private static void updateStudentInfoById(ArrayList<Student> list) {
        //1.键盘录入要修改的学生学号
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的学生学号:");
        String updateId = sc.next();
        //2.调用 getIndex 方法查找学号对应的索引
        int index = getIndex(updateId, list);
        //3.如果学号不存在,给出错误提示
        if (index == -1) {
            System.out.println("查无此人,修改失败!");
        } else {
            //4.如果学号存在,录入新的学生信息,完成修改
            System.out.println("请输入新的学生姓名:");
            String name = sc.next();
            System.out.println("请输入新的学生年龄:");
            int age = sc.nextInt();
            System.out.println("请输入新的学生生日:");
            String birthday = sc.next();

            //将新录入的学生信息,封装为学生对象
            Student stu = new Student(updateId, name, age, birthday);

            list.set(index, stu);
        }

    }

    /**
     * 根据学号删除集合中的学生
     */
    private static void deleteStudentInfoById(ArrayList<Student> list) {
        //1.键盘录入要删除的学号
        Scanner sc = new Scanner(System.in);
        System.out.println("输入您要删除的学生学号:");
        String id = sc.next();
        //2.调用getIndex方法,查找学号在集合中的索引
        int index = getIndex(id, list);
        //3.判断方法的返回值是否为-1
        if (index == -1) {
            //3.1 是-1,说明学号不存在,给出错误提示
            System.out.println("查无此人,删除失败!");
        } else {
            //3.2 不是-1,说明学号存在,根据索引做删除
            list.remove(index);
            System.out.println("删除成功!");
        }

    }

    /**
     * 此方法用于查看学生
     */
    private static void queryStudentInfos(ArrayList<Student> list) {
        if (list.size() == 0) {
            System.out.println("查无信息,请添加后重试!");
        } else {
            System.out.println("学号\t\t\t姓名\t年龄\t生日");
            for (int i = 0; i < list.size(); i++) {
                Student stu = list.get(i);
                System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getBirthday());
            }
        }
    }

    /**
     * 此方法根据学号,去集合中查找对应的索引
     */
    private static int getIndex(String id, ArrayList<Student> list) {
        //1.遍历集合,获取到每一个学生对象
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            //2.比对
            if (id.equals(stu.getId())) {
                //3.找到了,返回正确的索引
                return i;
            }
        }
        //4.没找到,返回-1
        return -1;
    }
}

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

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

相关文章

国联易安:2023年网络安全“五大技术”预测

我国对网络安全非常重视&#xff0c;明确指出“安全是发展的前提&#xff0c;发展是安全的保障&#xff0c;安全和发展要同步推进”。作为国内专注于保密与非密领域的分级保护、等级保护、业务连续性安全和大数据安全产品解决方案与相关技术研究开发的领军企业&#xff0c;国联…

数学建模与数据分析 || 3. 面向数据的特征提取方法: 探索性数据分析

面向数据的特征提取方法: 探索性数据分析 文章目录面向数据的特征提取方法: 探索性数据分析1. 原始数据的准备1.1 导入 python 模块1.2 导入数据集并进行宏观认识1.3 数据集描述2. 数据的预处理2.1 缺失数据的甄别2.2 类别规模的评估3. 数据特征的处理3.1 第一个因变量- 分析范…

【Linux】Linux调试器-gdb使用

作者&#xff1a;小卢 专栏&#xff1a;《Linux》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 目录 1.背景 2.gdb的使用 2.1如何生成可以调试debug版本的文件&#xff1a; 2.2如何查看调试信息&…

wcf服务启动禁用Wcf测试客户端(WcfTestClient)

以下页面在WCF工程运行时&#xff0c;会自动启动wcf测试客户端。如果想禁止&#xff0c;可以通过这个方法。 如果希望F5时始终启动IE&#xff0c;可以在.csproj.user文件里增加EnableWcfTestClientForSVC属性配置以禁用WCF测试客户端&#xff1a; <Project> <ProjectE…

Excel等文件中出现新型恶意软件Dropper,通过钓鱼邮件传播

Dropper 是将 Payload 部署到失陷主机的恶意软件&#xff0c;被很多攻击者使用。2022 年第二季度研究人员发现了一些活跃的 Dropper&#xff0c;例如 Microsoft Excel 文件以及 Windows 快捷方式文件和 ISO 文件。通过与社会工程相结合的攻击方式&#xff0c;诱使受害者触发失陷…

打脸质疑者!Mobileye市值冲高,公司CEO说出心声

三个多月前&#xff0c; Mobileye以21美元发行价第二次在美股IPO上市。截止上周五&#xff0c;该公司股价升至32.98美元&#xff0c;市值达到264.47亿美元。相比于美股其他自动驾驶公司股价跌跌不休&#xff0c;显然&#xff0c;资本市场更看重企业的盈利能力和可预见的营收规模…

CVE-2023-24055漏洞复现

KeePass download | SourceForge.net 下载链接 直接咔咔安装 默认路径&#xff1a; 先汉化一下 汉化文件放进去 切换到 KeePass&#xff0c;单击 View → Change Language&#xff0c;然后选择您的语言。重新启动 KeePass 汉化成功。建立新数据库&#xff1a; 文件默认命名为…

HTTP协议详细解读

文章目录1. HTTP概念2. HTTP 特点3. HTTP 协议的工作过程4. 认识URL5. HTTP 请求数据格式6. HTTP 响应数据格式7. 总结&#x1f4c2;橙子精品文章学习推荐1. HTTP概念 HTTP&#xff1a;HyperText Transfer Protocol&#xff0c;超文本传输协议。HTTP 协议规定了浏览器和服务器…

Vue中的 v-show 和 v-if 的区别

一、v-show与v-if的共同点 我们都知道在 vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else)&#xff0c;都能控制元素在页面是否显示 在用法上也是相同的 <Model v-show"isShow" /> <Model v-if"isShow" /> 当表达式为true的时候&…

【微信小程序】webview使用、限制、扩展说明

0 说明 只是一些我自己常见的用法的整理和说明 更多用法还是请看官方文档&#xff1a;web-view 1 小程序web-view支持的页面 1、关联公众号的文章页【活动、文章、引导关注】 2、服务器配置了微信安全校验文件的网页【需要放置在域名根目录下】 2 小程序web-view不支持的页面…

Maxtang大唐英特尔12代J6412无风扇双网口迷你主机真实评测

今天为大家评测一款无风扇的双网口迷你主机&#xff0c;这款主机来自于maxtang大唐采用了英特尔12代赛扬J6412处理器&#xff0c;产品最出彩的地方就是它的网络配置&#xff0c;不仅拥有双千兆网口&#xff0c;还搭载了SIM卡插槽&#xff0c;并支持4G上网。评测产品配置如下&am…

蓝桥杯-玩具蛇

没有白走的路&#xff0c;每一步都算数&#x1f388;&#x1f388;&#x1f388; 题目描述&#xff1a; 已知一个4x4的方格&#xff0c;和一个16个单位长度组成的玩具蛇&#xff0c;即蛇头&#xff0c;蛇身&#xff0c;蛇尾的长度总共是16&#xff0c; 假设蛇的一节在方格中的…

Linux安装JDK8详细步骤

目录 1.虚拟机开启后&#xff0c;在/opt目录下新建文件夹 2.将JDK8压缩包传入/opt/install文件夹中 3. 解压JDK8到/opt/soft目录下 4.更改文件名 5.配置环境变量 6.检查JDK8是否安装成功 1.虚拟机开启后&#xff0c;在/opt目录下新建文件夹 2.将JDK8压缩包传入/opt/insta…

关于【继承】这些你都了解吗?

致前行的人&#xff1a; 要努力&#xff0c;但不要着急&#xff0c;繁花锦簇&#xff0c;硕果累累&#xff0c;都需要过程&#xff01; 目录 1.继承的概念和定义 1.1继承的概念 1.2继承的定义 2.基类和派生类对象赋值转换 3.继承中的作用域 4.派生类的默认成员函数 5.继承与友元…

企业微信开发(五)群活码

企业微信API&#xff0c;提供一个群活码的功能&#xff0c;好友可以通过扫码直接进群&#xff0c;非好友关系也可以。群活码的性质&#xff0c;在群满200人后自动创建新的群&#xff0c;把后面扫码的人添加进去&#xff0c;但是该活码只能放5个群&#xff0c;企业微信API&#…

【电子学会】2022年09月图形化三级 -- 加法出题器

加法出题器 编写程序出10道40以内的加法题&#xff0c;两个加数为20以内的正整数&#xff0c;程序最后提示回答正确的数量。 1. 准备工作 &#xff08;1&#xff09;默认小猫角色&#xff0c;默认白色背景。 2. 功能实现 &#xff08;1&#xff09;点击绿旗后&#xff0c;角…

安装openGauss

一、准备软硬件环境1.新建用户组、用户groupadd dbgroupuseradd -g dbgroup smispasswd smis新密码&#xff1a;smis1qazxc2.创建文件夹mkdir -p /opt/software/openGausschown 755 -R /opt/softwarechown -R smis /opt/software/openGauss3.下载安装包下载地址&#xff1a;htt…

Python爬虫之Scrapy框架系列(12)——实战ZH小说的爬取来深入学习CrawlSpider

目录&#xff1a;1. CrawlSpider的引入&#xff1a;&#xff08;1&#xff09;首先&#xff1a;观察之前创建spider爬虫文件时&#xff08;2&#xff09;然后&#xff1a;通过命令scrapy genspider获取帮助&#xff1a;&#xff08;3&#xff09;最后&#xff1a;使用模板crawl…

从电影《流浪地球2》,看东西方价值观,中华文化五千年有原因的

说起今年的春节档电影&#xff0c;很多人都会想起《满江红》&#xff0c;因为这部由张艺谋导演的电影&#xff0c;票房一直在屡创新高。其实观众关注《满江红》的同时&#xff0c;也不要忘了另一部电影&#xff0c;贺岁片《流浪地球2》同样不可小觑。 一直以来&#xff0c;科幻…

【小程序】报错:no such file or directory, access ‘wxfile://usr/miniprogramLog/log2‘

出现场景 在微信小程序开发中&#xff0c;使用真机调试的时候&#xff0c;出现这个错误 解决方式 将真机调试由2.0切换到1.0