Java学习之路-day-09 ArrayList集合

Java ArrayList集合

  • 每日一句
  • 1. ArrayList
    • 1.1 ArrayList类概述
    • 1.2 ArrayList类常用方法
    • 1.3 ArrayList存储字符串并遍历
    • 1.4 ArrayList存储学生类对象并遍历
    • 1.5 ArrayList存储学生对象并遍历升级版
  • 2. 极简学生管理系统
    • 2.1 学生管理系统实现步骤
    • 2.2 学生类的定义
    • 2.3 测试类定义

每日一句

碧云天,黄花地,西风紧,北雁南飞。晓来谁染霜林醉?总是离人泪。

评价:在这暮秋时分,是谁将这些霜叶儿们染成如此让人发醉的红色?是悲秋感冬?是相见恨晚?是热泪盈眶?不是,那是离别之人伤感的眼泪!

1. ArrayList

1.1 ArrayList类概述

集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变
集合类有很多,目前我们先学习一个:ArrayList

ArrayList:可调整大小的数组实现
: 是一种特殊的数据类型,泛型

怎么用呢?
在出现E的地方我们使用引用数据类型替换即可
举例:ArrayList, ArrayList

1.2 ArrayList类常用方法

ArrayList构造方法和添加方法
Java学习之路-day-09 ArrayList集合_第1张图片
ArrayList集合常用方法
Java学习之路-day-09 ArrayList集合_第2张图片
示例代码:

import java.util.ArrayList;

public class ArrayListDemo01 {
     
    public static void main(String[] args) {
     
        // 创建一个空的集合
        ArrayList<String> array = new ArrayList<>();
        // 将指定的元素追加到此集合的末尾
        array.add("hello");
        array.add("world");
        array.add("java");

        // 在此集合的指定位置插入元素
        array.add(1, "javase");
        array.add(3, "javaee");
        
		// public boolean remove(Object o),删除指定元素,返回是否成功
        System.out.println(array.remove("javaee"));

        // public E remove(int index),删除索引处的元素,返回被删除元素
        System.out.println(array.remove(1));

        // public E set(int index, E element)修改指定索引处元素
        System.out.println(array.set(1,"javaee"));
        
        // public E get(int index),返回指定索引处的元素
        System.out.println(array.get(0));
        
        // public int size(),返回集合的元素个数
        System.out.println(array.size());
        
        // 输出集合
        System.out.println("array:" + array);
    }
}

1.3 ArrayList存储字符串并遍历

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

代码实现:

import java.util.ArrayList;

public class ArrayListDemo03 {
     
    public static void main(String[] args) {
     
        // 创建集合
        ArrayList<String> array = new ArrayList<String>();
        // 往集合添加字符串数据
        array.add("张飞");
        array.add("关羽");
        array.add("刘备");

        // 遍历集合
        for (int i = 0; i < array.size(); i++){
     
            String s = array.get(i);
            System.out.println(s);
        }
    }
}

1.4 ArrayList存储学生类对象并遍历

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

代码实现
学生类

/*
    学生类
 */
public class Student {
     
    private String name;
    private int age;

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

    public String getName() {
     
        return name;
    }

    public void setName(String name) {
     
        this.name = name;
    }

    public int getAge() {
     
        return age;
    }

    public void setAge(int age) {
     
        this.age = age;
    }
}

实现类

public class ArrayListDemo04 {
     
    public static void main(String[] args) {
     
        // 创建集合对象
        ArrayList<Student> array = new ArrayList<Student>();

        // 创建学生对象
        Student s1 = new Student("朱朝阳", 13);
        Student s2 = new Student("严良", 14);
        Student s3 = new Student("岳谱", 9);

        // 添加学生对象到集合
        array.add(s1);
        array.add(s2);
        array.add(s3);

        // 遍历集合
        for (int i = 0; i < array.size(); i++){
     
            Student s = array.get(i);
            System.out.println(s.getName() + "," + s.getAge());
        }
    }
}

1.5 ArrayList存储学生对象并遍历升级版

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

代码实现
1 学生类

/*
    定义学生类,为了方便键盘录入,成员变量都定义为String 类型
 */
public class Students {
     
    private String name;
    private String age;

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

    public String getName() {
     
        return name;
    }

    public void setName(String name) {
     
        this.name = name;
    }

    public String getAge() {
     
        return age;
    }

    public void setAge(String age) {
     
        this.age = age;
    }
}

2 实现类

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

public class ArrayListDemo05 {
     
    public static void main(String[] args) {
     
        // 创建集合对象
        ArrayList<Students> array = new ArrayList<Students>();
        // 调用方法,添加学生对象
        addStudent(array);
        addStudent(array);
        addStudent(array);
        for (int i = 0; i < array.size(); i++){
     
            Students s = array.get(i);
            System.out.println(s.getName() + "," + s.getAge());
        }
    }

    // 提高代码复用性,写方法
    public static void addStudent(ArrayList<Students> array){
     
        // 键盘录入数据
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入学生姓名:");
        String name = sc.nextLine();
        System.out.print("请输入学生年龄:");
        String age = sc.nextLine();

        // 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
        Students s = new Students();
        s.setName(name);
        s.setAge(age);

        // 往集合添加学生对象
        array.add(s);
    }
}

2. 极简学生管理系统

2.1 学生管理系统实现步骤

案例需求
针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下:
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序

实现步骤

  1. 定义学生类,包含以下成员变量
    private String sid // 学生id
    private String name // 学生姓名
    private String age // 学生年龄
    private String address // 学生所在地

  2. 学生管理系统主界面的搭建步骤
    2.1 用输出语句完成主界面的编写
    2.2 用Scanner实现键盘输入
    2.3 用switch语句完成选择的功能
    2.4 用循环完成功能结束后再次回到主界面

  3. 学生管理系统的添加学生功能实现步骤
    3.1 定义一个方法,接收ArrayList集合
    3.2 方法内完成添加学生的功能 ①键盘录入学生信息 ②根据录入的信息创建学生对象 ③将学生对象添加到集合中 ④提示添加成功信息
    3.3 在添加学生的选项里调用添加学生的方法

  4. 学生管理系统的查看学生功能实现步骤
    4.1 定义一个方法,接收ArrayList集合
    4.2 方法内遍历集合,将学生信息进行输出
    4.3 在查看所有学生选项里调用查看学生方法

  5. 学生管理系统的删除学生功能实现步骤
    5.1 定义一个方法,接收ArrayList集合
    5.2 方法中接收要删除学生的学号
    5.3 遍历集合,获取每个学生对象
    5.4 使用学生对象的学号和录入的要删除的学号进行比较,如果相同,则将当前学生对象从集合中删除
    5.5 在删除学生选项里调用删除学生的方法

  6. 学生管理系统的修改学生功能实现步骤
    6.1 定义一个方法,接收ArrayList集合
    6.2 方法中接收要修改学生的学号
    6.3 通过键盘录入学生对象所需的信息,并创建对象
    6.4 遍历集合,获取每一个学生对象。并和录入的修改学生学号进行比较.如果相
    同,则使用新学生对象替换当前学生对象
    6.5 在修改学生选项里调用修改学生的方法

  7. 退出系统
    使用System.exit(0);退出JVM

2.2 学生类的定义

代码如下:

public class Student {
     
    private String sid;     // 学号
    private String name;    // 姓名
    private String age;        // 年龄
    private String address;     // 居住地

    public Student() {
     
    }

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

    public String getSid() {
     
        return sid;
    }

    public void setSid(String sid) {
     
        this.sid = sid;
    }

    public String getName() {
     
        return name;
    }

    public void setName(String name) {
     
        this.name = name;
    }

    public String getAge() {
     
        return age;
    }

    public void setAge(String age) {
     
        this.age = age;
    }

    public String getAddress() {
     
        return address;
    }

    public void setAddress(String address) {
     
        this.address = address;
    }
}

2.3 测试类定义

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

/*
    学生管理系统:(1)定义学生类;(2)主界面的代码编写;(3)添加学生的代码编写
    (4)查看学生的代码编写;(5)删除学生的代码编写;(6)修改学生的代码编写
 */
public class StudentManager {
     
    public static void main(String[] args) {
     
        // 成绩集合对象,用于存储学生数据
        ArrayList<Student> array = 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录入数据
            Scanner sc = new Scanner(System.in);
            String choice = sc.nextLine();

            // 使用switch语句完成操作选择
            switch (choice) {
     
                case "1":
//                    System.out.println("添加学生");
                    addStudent(array);
                    break;
                case "2":
//                    System.out.println("删除学生");
                    deleteStudent(array);
                    break;
                case "3":
//                    System.out.println("修改学生");
                    updateStudent(array);
                    break;
                case "4":
//                    System.out.println("查看所有学生");
                    findAllStudent(array);
                    break;
                case "5":
                    System.out.println("谢谢使用");
//                    break;
                    System.exit(0); // JVM退出
            }
        }
    }

    // 定义一个方法,用于添加学生信息
    public static void addStudent(ArrayList<Student> array) {
     
        // 键盘录入信息
        Scanner sc = new Scanner(System.in);

        // 为了让sid在循环外被访问到,定义在外面
        String sid;
        // 为了让重新能够回到这里,我们使用循环实现
        while (true) {
     
            System.out.print("请输入学生学号: ");
            sid = sc.nextLine();
            // 调用方法,判断学号是否被使用
            boolean flag = isUsed(array, sid);
            if (flag) {
     
                System.out.println("你输入的学号已经被使用,请重新输入");
            }else {
     
                break;
            }
        }

        System.out.print("请输入学生姓名: ");
        String name = sc.nextLine();
        System.out.print("请输入学生年龄: ");
        String age = sc.nextLine();
        System.out.print("请输入学生居住地: ");
        String address = sc.nextLine();

        // 创建学生对象,把录入信息传给成员变量
        Student s = new Student();
        s.setSid(sid);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);

        // 将学生对象添加到集合
        array.add(s);

        System.out.println("添加学生成功!");
    }

    // 定义一个方法,判断学号是否被使用过
    public static boolean isUsed(ArrayList<Student> array, String sid) {
     
        // 如果与集合中的某一学生学号相同,返回true;如果都不相同,返回false
        boolean flag = false;
        for (int i = 0; i < array.size(); i++) {
     
            Student s = array.get(i);
            if (s.getSid().equals(sid)) {
         // 如果学号相同
                flag = true;    // 学号被使用
                break;
            }
        }
        return flag;
    }

    // 定义一个方法,查看学生信息
    public static void findAllStudent(ArrayList<Student> array) {
     
        // 判断集合是否有数据,如果没有显示提示信息
        if (array.size() == 0) {
     
            System.out.println("无信息,请先添加信息再查询");
            return;     // 为了让程序不再往下执行
        }
        // 显示表头信息,\t是Tab键
        System.out.println("学号\t\t\t\t姓名\t\t年龄\t\t居住地");
        // 将集合的数据提取出来
        for (int i = 0; i < array.size(); i++) {
     
            Student s = array.get(i);
            System.out.println(s.getSid() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "岁\t" + s.getAddress());
        }
    }

    // 定义一个方法,用于删除学生信息
    public static void deleteStudent(ArrayList<Student> array) {
     
        // 键盘录入需要删除的学生的学号
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入你要删除的学生的学号: ");
        String sid = sc.nextLine();

        // 判断给定的学号是否存在
        // 如果不存在,显示提示信息;如果存在,执行删除
        int index = -1;
        for (int i = 0; i < array.size(); i++) {
     
            Student student = array.get(i);
            if (student.getSid().equals(sid)) {
     
                index = i;
                break;
            }
        }
        if (index == -1) {
     
            System.out.println("该信息不存在,请重新输入");
        } else {
     
            array.remove(index);
            // 给出删除成功提示
            System.out.println("删除成功!");
        }
    }

    // 定义一个方法,用于修改学生的信息
    public static void updateStudent(ArrayList<Student> array) {
     
        // 键盘录入要修改的信息
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入你要修改的学生的学号: ");
        String sid = sc.nextLine();
        // 判断给定的学号是否存在
        // 如果不存在,显示提示信息;如果存在,执行删除
        int index = -1;
        for (int i = 0; i < array.size(); i++) {
     
            Student s = array.get(i);
            if (s.getSid().equals(sid)) {
         // 如果存在
                index = i;
                break;
            }
        }

        if (index != -1) {
     
            System.out.print("请输入学生的新姓名: ");
            String name = sc.nextLine();
            System.out.print("请输入学生的新年龄: ");
            String age = sc.nextLine();
            System.out.print("请输入学生的新居住地: ");
            String address = sc.nextLine();

            // 创建学生对象
            Student s = new Student();
            s.setSid(sid);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);

            // 遍历集合,修改学生信息
            for (int i = 0; i < array.size(); i++) {
     
                Student student = array.get(i);
                if (student.getSid().equals(sid)) {
     
                    array.set(i, s);
                    break;
                }
            }
            System.out.println("修改学生信息成功!");
        } else {
     
            System.out.println("该信息不存在,请重新输入");
        }
    }
}

你可能感兴趣的:(编程语言,java)