ArrayList类和学生管理系统

ArrayList类的概述

  • 集合:是一个大小可变的容器,可以存储多个数据
  • 集合和数组的区别:
    • 集合的大小可变(不固定的)
    • 数组的大小不可变(固定的)
  • ArrayList类:是其中一个集合类
    • 是泛型,表示一种未知的数据类型,在使用的时候确定其具体的数据类型
    • 在这里ArrayList类的泛型是用来限制集合中元素的类型
    • 怎么用?
      • 在出现E的位置使用引用数据类型替换即可
      • 例如:
        • ArrayList ArrayList集合中元素的类型只能是String类型
        • ArrayList ArrayList集合中元素的类型只能是Student类型
        • ArrayList 编译报错.因为在E出现的位置只能写引用数据类型替换,不能写基本类型

ArrayList类构造和添加方法

  • public ArrayList(); 空参构造方法
  • public boolean add(E e) 在末尾添加元素
  • public boolean add(int index,E e) 在指定的位置添加元素
public class Test{
    public static void main(String[] args){
        // 创建ArrayList集合,限制集合中元素的类型为String类型
        ArrayList<String> list = new ArrayList<>();
        
        // 往集合中添加元素
        list.add("javase");
        list.add("javaweb");
        list.add("javaee");
        System.out.println(list);// [javase, javaweb, javaee]
        
        // 往集合索引为1的位置添加一个java
        list.add(1,"java");
        System.out.println(list);// [javase, java, javaweb, javaee]
    }
}

ArrayList类常用方法


import java.util.ArrayList;

/*
    ArrayList常用方法:
        public boolean remove(Object o):删除指定的元素,返回删除是否成功
        public E remove(int index):删除指定索引处的元素,返回被删除的元素
        public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
        public E get(int index):返回指定索引处的元素
        public int size():返回集合中的元素的个数
 */
public class ArrayListDemo02 {
    public static void main(String[] args) {
        //创建集合
        ArrayList<String> array = new ArrayList<String>();

        //添加元素
        array.add("hello");
        array.add("world");
        array.add("java");

        //public boolean remove(Object o):删除指定的元素,返回删除是否成功
//        System.out.println(array.remove("world"));
//        System.out.println(array.remove("javaee"));

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

        //IndexOutOfBoundsException
//        System.out.println(array.remove(3));

        //public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
//        System.out.println(array.set(1,"javaee"));

        //IndexOutOfBoundsException
//        System.out.println(array.set(3,"javaee"));

        //public E get(int index):返回指定索引处的元素
//        System.out.println(array.get(0));
//        System.out.println(array.get(1));
//        System.out.println(array.get(2));
        //System.out.println(array.get(3)); //?????? 自己测试

        //public int size():返回集合中的元素的个数
        System.out.println(array.size());

        //输出集合
        System.out.println("array:" + array);
    }
}

ArrayList类存储字符串并遍历


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

    思路:
        1:创建集合对象
        2:往集合中添加字符串对象
        3:遍历集合,首先要能够获取到集合中的每一个元素,这个通过get(int index)方法实现
        4:遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现
        5:遍历集合的通用格式
 */
public class ArrayListTest01 {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<String> array = new ArrayList<String>();

        //往集合中添加字符串对象
        array.add("刘正风");
        array.add("左冷禅");
        array.add("风清扬");

        //遍历集合,首先要能够获取到集合中的每一个元素,这个通过get(int index)方法实现
//        System.out.println(array.get(0));
//        System.out.println(array.get(1));
//        System.out.println(array.get(2));

//        for(int i=0; i<3; i++) {
//            System.out.println(array.get(i));
//        }

        //遍历集合,其次要能够获取到集合的长度,这个通过size()方法实现
//        System.out.println(array.size());

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

ArrayList存储学生对象并遍历

import java.util.ArrayList;

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

    思路:
        1:定义学生类
        2:创建集合对象
        3:创建学生对象
        4:添加学生对象到集合中
        5:遍历集合,采用通用遍历格式实现
 */
public class ArrayListTest02 {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<Student> array = new ArrayList<Student>();

        //创建学生对象
        Student s1 = new Student("林青霞", 30);
        Student s2 = new Student("风清扬", 33);
        Student s3 = new Student("张曼玉", 18);

        //添加学生对象到集合中
        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());
        }
    }
}

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


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

    思路:
        1:定义学生类,为了键盘录入数据方便,把学生类中的成员变量都定义为String类型
        2:创建集合对象
        3:键盘录入学生对象所需要的数据
        4:创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
        5:往集合中添加学生对象
        6:遍历集合,采用通用遍历格式实现
 */
public class ArrayListTest {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<Student> array = new ArrayList<Student>();

        /*
        //键盘录入学生对象所需要的数据
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生姓名:");
        String name = sc.nextLine();

        System.out.println("请输入学生年龄:");
        String age = sc.nextLine();

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

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

        //为了提高代码的复用性,我们用方法来改进程序
        addStudent(array);
        addStudent(array);
        addStudent(array);

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

    /*
        两个明确:
            返回值类型:void
            参数:ArrayList<Student> array
     */
    public static void addStudent(ArrayList<Student> array) {
        //键盘录入学生对象所需要的数据
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生姓名:");
        String name = sc.nextLine();

        System.out.println("请输入学生年龄:");
        String age = sc.nextLine();

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

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

学生关系系统项目演示
学生管理系统之学生类

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

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

    public Student() {
    }

    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;
    }
}

学生管理系统之主界面


import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        // 用循环再次回到主界面
        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.系统退出");

            // 用Scanner实现键盘录入
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入您的选择:");
            int op = sc.nextInt();

            // 用switch语句完成操作选择
            switch (op) {
                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("系统退出");
                    // break;
                    System.exit(0);// jvm退出
            }
        }

    }
}

学生管理系统之添加学生

// 定义一个方法,用来添加学生
 public static void addStudent(ArrayList<Student> array) {
        //键盘录入学生对象所需要的数据,显示提示信息,提示要输入何种信息
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入学生学号:");
        String sid = sc.nextLine();
        System.out.println("请输入学生姓名:");
        String name = sc.nextLine();
        System.out.println("请输入学生年龄:");
        String age = sc.nextLine();
        System.out.println("请输入学生居住地:");
        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 void findAllStudent(ArrayList<Student> array) {

        //判断集合中是否有数据,如果没有显示提示信息
        if (array.size() == 0) {
            System.out.println("无信息,请先添加信息再查询");
            //为了让程序不在往下执行,给出return;
            return;
        }

        //显示表头信息
        //\t 其实就是tab键的位置
        System.out.println("学号\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" + s.getName() + "\t" + s.getAge() + "岁\t\t" + s.getAddress());
        }
    }

学生管理系统之删除学生

//定义一个方法,用于删除学生信息
    public static void deleteStudent(ArrayList<Student> array) {
        //键盘录入要删除的学生学号,显示提示信息
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入你要删除的学生的学号:");
        String sid = sc.nextLine();

        //遍历集合将对应学生对象从集合中删除
        for(int i=0; i<array.size(); i++) {
            Student s = array.get(i);
            if(s.getSid().equals(sid)) {
                array.remove(i);
                break;
            }
        }

        //给出删除成功提示
        System.out.println("删除学生成功");
    }

学生管理系统之修改学生

//定义一个方法,用于修改学生信息
    public static void updateStudent(ArrayList<Student> array) {
        //键盘录入要修改的学生学号,显示提示信息
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入你要修改的学生的学号:");
        String sid = sc.nextLine();

        //键盘录入要修改的学生信息
        System.out.println("请输入学生新姓名:");
        String name = sc.nextLine();
        System.out.println("请输入学生新年龄:");
        String age = sc.nextLine();
        System.out.println("请输入学生新居住地:");
        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("修改学生成功");
    }

学生管理系统之学号不存在问题

public static void deleteStudent(ArrayList<Student> array) {
        //键盘录入要删除的学生学号,显示提示信息
        Scanner sc = new Scanner(System.in);

        System.out.println("请输入你要删除的学生的学号:");
        String sid = sc.nextLine();

        //遍历集合将对应学生对象从集合中删除
        // 旗帜变量
        int index = -1;// 记录要删除的元素的索引,默认值为-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.println("删除失败,您要删除的学生不存在");
        } else {
            array.remove(index);
            //给出删除成功提示
            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;
    }

总结

 ArrayList集合:
概述: 是一个集合类,可以用来存储多个数据
特点:
	1.集合的大小不固定
    2.集合中只能存储引用数据类型
使用:
	1.ArrayList<E>: 
		在E的位置使用引用数据类型替换即可,限制集合中元素的类型
    2.构造方法:  public ArrayList();
	3.成员方法:
		public boolean add(E e);
		public boolean add(int index,E e);
		public boolean remove(Object o):删除指定的元素,返回删除是否成功
        public E remove(int index):删除指定索引处的元素,返回被删除的元素
        public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
        public E get(int index):返回指定索引处的元素
        public int size():返回集合中的元素的个数

扩展–自动装箱和自动拆箱

public class Test {
    public static void main(String[] args) {
        /*
            每一个基本类型都会有一个对应的包装类
            基本类型                引用数据类型(类)
            byte                    Byte
            short                   Short
            int                     Integer
            long                    Long
            float                   Float
            double                  Double
            char                    Character
            boolean                 Boolean

            自动装箱: 系统自动把基本类型转换为对应的包装类类型
            自动拆箱: 系统自动把包装类类型转换为对应的基本类型
         */
        // 自动装箱:
        // Integer i1 = new Integer(10);// 表示该方法已过时
        // System.out.println(i1);// 10

        Integer i2 = 10;// 系统自动把int类型的10包装为了Integer类型的对象
        System.out.println(i2);// 10

        Boolean flag = true;
        System.out.println(flag);// true

        System.out.println("================================");
        
        // 自动拆箱:
        int num = i2;
        System.out.println(num);// 10

        boolean res = flag;
        System.out.println(res);// true

        // 编译报错
        // 因为左边是String类型,右边是int类型
        // String str = 10;

    }
}

扩展—集合存储基本类型数据


import java.util.ArrayList;

public class Test1 {
    public static void main(String[] args) {
        // 定义一个集合,用来存储整数
        // ArrayList<int> list1 = new ArrayList<int>();// 编译报错,因为<>里面不允许写基本数据类型,只能写引用数据类型
        ArrayList<Integer> list1 = new ArrayList<>();

        // 往集合中存储数据
        list1.add(10);
        list1.add(20);
        list1.add(30);
        System.out.println(list1);// [10, 20, 30]

        // 定义一个集合,用来存储小数
        ArrayList<Double> list2 = new ArrayList<>();

        // 往集合中添加元素
        list2.add(3.14);
        list2.add(3.14);
        list2.add(3.14);
        System.out.println(list2);// [3.14, 3.14, 3.14]


    }
}

扩展—ArrayList集合删除元素的注意事项

import java.util.ArrayList;

public class Test2 {
    public static void main(String[] args) {
        /*
            注意:
                public boolean remove(E e) 删除指定的元素
                public E remove(int index) 删除指定索引位置上的元素,返回被删除的元素
         */
        // 定义一个集合,用来存储整数
        ArrayList<Integer> list = new ArrayList<>();

        // 往集合中添加元素
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);

        System.out.println(list);// [1, 2, 3, 4]

        // 需求: 删除集合中的2这个元素  (元素是整数类型,索引也是整数类型)
//        删除元素2
        Integer i = 2;
        list.remove(i);
        System.out.println(list);// [1, 3, 4]

//        删除了索引为1的元素
//        list.remove(1);
//        System.out.println(list);// [1, 3, 4]

//        删除了索引为2的元素
//         list.remove(2);
//        System.out.println(list);//  [1, 2, 4]

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ven%

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值