day_13 ArrayList

ArrayList

集合类的子类
	是一个长度可变的容器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public static void main(String[] args) {
    ArrayList list = new ArrayList();
    // 添加元素
    list.add(1);
    list.add(true);
    list.add("hello");
    // 获取list的元素的 个数
    System.out.println(list.size());

    //移除元素
    list.remove(1);
    //修改元素
    list.set(0,11);
    //遍历ArrayList
    for(int i = 0 ; i < list.size();i++){
        System.out.println(list.get(i));
    }
    // 判断容器中是否包含某一个元素
    System.out.println(list.contains(111));
}

在这里插入图片描述

import java.util.ArrayList;

public class ArrayListDemo_02 {
    /*
    案例:存储字符串并遍历
        需求:创建一个存储字符串的集合,存储3个字符串元素,
        使用程序实现在控制台遍历该集合
      思路:
        1 创建一个 ArrayList
        2 容器中存储的是 String对象
        3 遍历
     */
    public static void main(String[] args) {
        // 创建一个容器
        ArrayList<String> strList = new ArrayList<>();
        //添加元素
        strList.add("java");
        strList.add("HTML");
        strList.add("Spring");
        // 遍历
        for(int i = 0 ; i <strList.size();i++){
            System.out.println(strList.get(i));
        }
        // 使用增强for来遍历
        for(String str : strList){
            System.out.println(str);
        }

    }
}

在这里插入图片描述
一、用数组实现

// student类

public class Student {
    private int stuId;// 学号
    private String stuName;//姓名
    private int age;//年龄

    public Student() {
    }

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

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

    public int getStuId() {
        return stuId;
    }

    public void setStuId(int stuId) {
        this.stuId = stuId;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public void show(){
        System.out.println(this.getStuId() +"--"+this.getStuName()+"---"+this.getAge());
    }
}
public class ArrayListDemo_03 {
    //使用数组来存储自定义类型
    public static void main(String[] args) {
        // 创建自定义类型的数组
        Student[] stuArr = new Student[3];
        stuArr[0]= new Student(1,"张三",22);
        Student stu = new Student();
        stu.setStuId(2);
        stu.setStuName("李四");
        stu.setAge(20);
        stuArr[1] = stu;
        stuArr[2]= new Student(3,"王五",23);
        //遍历数组
        for(int i = 0 ; i < stuArr.length;i++){
            stuArr[i].show();
        }
        System.out.println("------------------------------");
        // 使用增强for
        for(Student student :stuArr){
            student.show();
        }
    }
}

在这里插入图片描述
二、ArrayList实现

import java.util.ArrayList;

public class ArrayListDemo_03 {
    //使用数组来存储自定义类型
    public static void main(String[] args) {
       
        //创建一个 容器
        ArrayList<Student> list = new ArrayList<>();
        list.add(new Student(1,"辛巴",21));
        Student student = new Student(2,"李佳琪",25);
        list.add(student);
        list.add(new Student(3,"维亚",28));
        for (int i = 0 ; i < list.size();i++){
            list.get(i).show();
        }
        System.out.println("------------------");
        for(Student stu1 :list){
            stu1.show();

        }
    }
}

在这里插入图片描述

public class ArrayListDemo_04 {
    /*
    需求:创建一个存储学生对象的集合,存储3个学生对象,
    使用程序实现在控制台遍历该集合,
    学生的姓名和年龄来自于键盘录入
     */
    public static void main(String[] args) {
        //1 创建集合
        ArrayList<Student> list = new ArrayList<>();
        //从键盘输入 创建Scanner对象
        Scanner sc = new Scanner(System.in);
        // 2 构建学生对象
        for(int i = 0 ; i < 3 ;i++){
          // 每次都 创建 一个新的学生对象
            Student stu = new Student();
            //为学生对象的属性赋值  输入的时候 最好不要进行混合类型的输入 
            System.out.println("请输入学生的ID:");
            stu.setStuId(sc.nextLine());
            System.out.println("请输入学生的姓名:");
            stu.setStuName(sc.nextLine());
            System.out.println("请输入学生年龄:");
            stu.setAge(sc.nextLine());
            //将创建好的学生对象添加到集合
            list.add(stu);
        }
        //遍历集合  输出学生信息
        for(Student stu : list){
           stu.show();
        }
    }
}

应用:学生管理系统

在这里插入图片描述

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

public class StudentManagerSystem {
    // 定义存储学生信息的 集合
    private static ArrayList<Student> list = new ArrayList<>();
    public static void main(String[] args) {
        systemUI();
    }
    //1 绘制主界面 包含操作菜单
    public static void systemUI(){
        //1 使用Scanner进行键盘输入
        Scanner sc = new Scanner(System.in);
        // 因为程序一直出于运行状态  直到用户输入5  程序结束
        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 opt = sc.nextInt();
            switch (opt){
                case 1:
                    addStudent();
                    break;
                case 2 :
                    deleteStudent();
                    break;
                case 3:
                    updateStudent();
                    break;
                case 4:
                    selectStudent();
                    break;
                case 5:
                    System.exit(0);
                    break;
                default:
                    System.out.println("您的选择有误,请重新选择");
                    break;

            }
        }
    }
    // 新增学生信息  每选择一次新增操作  只能新增一个学生信息
    public  static void addStudent(){
        Student student = new Student();
        Scanner sc = new Scanner(System.in);
        //为学生对象的属性赋值
        // 学号:使用数字  使用整数  从1开始  不合理
        System.out.println("请输入学生的ID:");
        student.setStuId(sc.nextLine());
        System.out.println("请输入学生的姓名:");
        student.setStuName(sc.nextLine());
        System.out.println("请输入学生年龄:");
        student.setAge(sc.nextLine());
        //将创建好的学生对象添加到集合
        list.add(student);
        System.out.println("添加学生成功");
    }
    //删除学生信息 根据学生的ID删除
    public static void deleteStudent(){
        //从键盘输入学生的ID
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要删除的学生的ID:");
        String  id = sc.nextLine();
        // 在真实的程序中 学生的 学号是字符串类型  那么如何根据学号来确定我们要删除的学生
        // 遍历所有的 学生对象 然后通过id的比较 获得要删除 的 学生在集合中的索引
        int index = -1;
         for(int i = 0 ; i< list.size();i++){
             Student stu = list.get(i);
                 if(stu.getStuId().equals(id)){
                    index = i;
                    break;
                 }
             }
            if(index == -1){
                System.out.println("学号输入有误,该学生不存在");
            }else{
                list.remove(index);
                System.out.println("删除成功");
            }
         }
    //修改学生信息
    public  static  void updateStudent(){
        //从键盘输入学生的ID
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要修改的学生的ID:");
        String  id = sc.nextLine();
        // 在真实的程序中 学生的 学号是字符串类型  那么如何根据学号来确定我们要删除的学生
        // 遍历所有的 学生对象 然后通过id的比较 获得要删除 的 学生在集合中的索引
        int index = -1;
        Student oldStu = null ;
        for(int i = 0 ; i< list.size();i++){
                Student stu  = list.get(i);
            if(stu.getStuId().equals(id)){
                oldStu = stu;
                index = i;
                break;
            }
        }
        if(index == -1){
            System.out.println("学号输入有误,该学生不存在");
        }else{
            Student newStu = new Student();
            newStu.setStuId(oldStu.getStuId());
            System.out.println("请输入学生的新姓名:");
            newStu.setStuName(sc.nextLine());
            System.out.println("请输入学生xin年龄:");
            newStu.setAge(sc.nextLine());
            list.set(index,newStu);
            System.out.println("修改成功");
        }

    }
    //查看学生信息
    public static  void  selectStudent(){
         for(Student stu : list){
             stu.show();
         }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值