首页 > 其他分享 >ArrayList

ArrayList

时间:2024-09-02 21:04:16浏览次数:4  
标签:studentArrayList String ArrayList System 学生 sid

ArrayList

目录

1 ArrayList

集合和数组的区别 :

​ 共同点:都是存储数据的容器

​ 不同点:数组的容量是固定的,集合的容量是可变的

1.1 ArrayList 的构造方法和添加方法

方法 描述
public ArrayList() 创建一个空的集合对象
public boolean add(E e) 将指定的元素追加到此集合的末尾
public void add(int index,E element) 在此集合中的指定位置插入指定的元素
ArrayList<E> 是一种特殊的数据类型,泛型。使用引用数据类型替换即可,表示该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() 返回集合中的元素的个数

1.2 ArrayList 存储字符串并遍历

案例需求 :

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

实现代码 :

package com.fcarey.ArrayList;

import java.util.ArrayList;

public class ArrayList01 {
    public static void main(String[] args) {
        // 创建集合对象
        ArrayList<String> list = new ArrayList<String>();
        // 往集合中添加字符串对象
        list.add("A");
        list.add("B");
        list.add("C");
        // 遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

1.3 ArrayList 存储学生对象并遍历

案例需求 :

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

**实现步骤 : **

​ 1:定义学生类

​ 2:创建集合对象

​ 3:创建学生对象

​ 4:添加学生对象到集合中

​ 5:遍历集合,采用通用遍历格式实现

代码实现 :

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

        //创建学生对象
        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());
        }
    }
}

2 综合练习

2.1 学生管理系统实现步骤

案例需求 :

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

实现步骤 :

  1. 定义学生类
    • 学号:String sid
    • 姓名:String name
    • 年龄:Int age
    • 生日:String birthday
    • 构造方法:
      • 无参构造
      • 带四个参数的构造成员方法
      • 每个成员变量对应给出get/set方法
  2. 学生管理系统主界面的搭建步骤
    1. 用输出语句完成主界面的编写
    2. 用Scanner实现键盘录入数据
    3. 用switch语句完成操作的选择
    4. 用循环完成再次回到主界面
  3. 添加学生功能实现步骤
    1. 用键盘录入选择添加学生
    2. 定义一个方法,用于添加学生
      1. 显示提示信息,提示要输入何种信息
      2. 键盘录入学生对象所需要的数据
      3. 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
      4. 将学生对象添加到集合中(保存)
      5. 给出添加成功提示
    3. 调用方法
  4. 查看学生功能实现步骤
    1. 用键盘录入选择查看所有学生信息
    2. 定义一个方法,用于查看学生信息
    3. 显示表头信息
    4. 将集合中数据取出按照对应格式显示学生信息
  5. 删除学生功能实现步骤
    1. 用键盘录入选择删除学生信息
    2. 定义一个方法,用于删除学生信息
      1. 显示提示信息
      2. 键盘录入要删除的学生学号
      3. 调用getIndex方法,查找该学号在集合的索引
      4. 如果索引为-1,提示信息不存在
      5. 如果索引不是-1,调用remove方法删除并提示删除成功
    3. 调用方法
  6. 修改学生功能实现步骤
    1. 用键盘录入选择修改学生信息
    2. 定义一个方法,用于修改学生信息
      1. 显示提示信息
      2. 键盘录入要修改的学生学号
      3. 调用getIndex方法,查找该学号在集合的索引
      4. 如果索引为-1,提示信息不存在
      5. 如果索引不是-1,键盘录入要修改的学生信息
      6. 集合修改对应的学生信息
      7. 给出修改成功提示
    3. 调用方法
  7. 退出系统
    1. return 退出系统

2.2 学生类的定义

package com.fcarey.ArrayList;

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

    public void Student() {
    }

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

        System.out.println(name + ":" + age);
    }

    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 int getAge() {
        return age;
    }

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

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
}

2.3 ArrayList02类的定义

package com.fcarey.ArrayList;

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

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

        // 创建集合容器对象
        ArrayList<Student> studentArrayList = new ArrayList<>();
        while (true) {
            System.out.println("--------欢迎来到学生管理系统--------\n" +
                    "\t1 添加学生\n" +
                    "\t2 删除学生\n" +
                    "\t3 修改学生\n" +
                    "\t4 查看学生\n" +
                    "\t5 退出\n" +
                    "\t请输入您的选择:");
            String choice = (new Scanner(System.in)).nextLine();
            switch (choice) {
                case "1":
                    addStudent(studentArrayList);
                    // switch 需要使用 break 语句跳出;
                    break;
                case "2":
                    removeStudent(studentArrayList);
                    break;
                case "3":
                    updateStudent(studentArrayList);
                    break;
                case "4":
                    searchStudent(studentArrayList);
                    break;
                case "5":
                    // return 是结束整个脚本运行。
                    return;
            }
        }
    }

    // void 表示该方法无返回值。
    private static void searchStudent(ArrayList<Student> studentArrayList) {
        System.out.println("请输入要修改的学生ID");
        String sid = (new Scanner(System.in)).nextLine();
        if (studentArrayList.isEmpty()) {
            System.out.println("当前无学生信息,请添加。");
        }
        if (getPosition(studentArrayList, sid) != -1) {
            System.out.println("学生信息" +
                    "\n\t学号: " + studentArrayList.get(getPosition(studentArrayList, sid)).getSid() +
                    "\n\t姓名: " + studentArrayList.get(getPosition(studentArrayList, sid)).getName() +
                    "\n\t年龄: " + studentArrayList.get(getPosition(studentArrayList, sid)).getAge() +
                    "\n\t生日: " + studentArrayList.get(getPosition(studentArrayList, sid)).getBirthday());
        }
    }

    // 查询对应学号所在的列表中的位置,并返回位置。
    private static int getPosition(ArrayList<Student> studentArrayList, String sid) {
        int position = -1;
        for (int i = 0; i < studentArrayList.size(); i++) {
            if (studentArrayList.get(i).getSid().equals(sid)) {
                position = i;
            }
        }
        return position;
    }

    // 根据查询方法确认对应学号所在位置。给出修改方法,并打印修改后的参数。
    private static void updateStudent(ArrayList<Student> studentArrayList) {
        System.out.println("请输入要修改的学生ID");
        String sid = (new Scanner(System.in)).nextLine();
        if (getPosition(studentArrayList, sid) != -1) {
            System.out.println("学号 " + sid + " 新名字: ");
            studentArrayList.get(getPosition(studentArrayList, sid)).setName(new Scanner(System.in).nextLine());
            System.out.println("学号 " + sid + " 新年龄: ");
            studentArrayList.get(getPosition(studentArrayList, sid)).setAge(new Scanner(System.in).nextInt());
            System.out.println("学号 " + sid + " 新生日: ");
            studentArrayList.get(getPosition(studentArrayList, sid)).setBirthday(new Scanner(System.in).nextLine());

            System.out.println("成功修改学号 " + sid + " 信息如下:" +
                    "\n\t姓名: " + studentArrayList.get(getPosition(studentArrayList, sid)).getName() +
                    "\n\t年龄: " + studentArrayList.get(getPosition(studentArrayList, sid)).getAge() +
                    "\n\t生日: " + studentArrayList.get(getPosition(studentArrayList, sid)).getBirthday());
        }
    }

    //
    private static void removeStudent(ArrayList<Student> studentArrayList) {
        System.out.println("请输入要删除的学生ID: ");
        String sid = (new Scanner(System.in)).nextLine();
        if (getPosition(studentArrayList, sid) != -1) {
            studentArrayList.remove(getPosition(studentArrayList, sid));
            System.out.println("学号 " + sid + " 删除成功!");
        } else {
            System.out.println("所删除学生不存在。");
        }
    }

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

        System.out.println("sid: ");
        String sid = studentInfo.nextLine();
        System.out.println("name: ");
        String name = studentInfo.nextLine();
        System.out.println("age: ");
        int age = studentInfo.nextInt();
        // 我们使用键盘输入的时候,其实输入了三部分 age的内容,换行符,birthday的内容
        // 方法一:将换行符读掉
        studentInfo.nextLine();
        System.out.println("birthday: ");
        // 方法二:重新创建Scanner对象:
        /*
        * Scanner sc1=new Scanner(System.in);
        * int n=sc1.nextInt();
        * Scanner sc2=new Scanner(System.in);
        * String s=sc2.nextLine();
        * */
        String birthday = studentInfo.nextLine();

        Student s = new Student(sid, name, age, birthday);
        studentArrayList.add(s);

        if (getPosition(studentArrayList, sid) != -1) {
            System.out.println("添加学生信息成功, 学号 " + sid + " 信息如下:" +
                    "\n\t姓名: " + studentArrayList.get(getPosition(studentArrayList, sid)).getName() +
                    "\n\t年龄: " + studentArrayList.get(getPosition(studentArrayList, sid)).getAge() +
                    "\n\t生日: " + studentArrayList.get(getPosition(studentArrayList, sid)).getBirthday());
        }
    }
}

标签:studentArrayList,String,ArrayList,System,学生,sid
From: https://www.cnblogs.com/f-carey/p/18354958

相关文章

  • Java-数据结构-ArrayList-练习 ψ(*`ー´)ψ
    目录:一、练习一(删除str1中str2出现的元素):二、练习二(杨辉三角):三、练习三(简单的洗牌算法):总结:一、练习一(删除str1中str2出现的元素):我们先来看看这个题的条件是什么和如何去做:我们来看代码是什么样的:publicstaticvoidmain(String[]args){//练习1......
  • 最常用集合 - arraylist详解
    ArrayList介绍ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量(capacity),表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器......
  • ArrayList与顺序表
    1.线性表         线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列..    线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是......
  • 调用ArrayList的add方法抛异常UnsupportedOperationException
    调用ArrayList的add方法抛异常UnsupportedOperationException对于一些想要把数组转成List的需求,可能会使用到Arrays.asList()获取List对象,但是这里面也存在一些问题。示例代码如下voidtest1(){List<Object>list=Arrays.asList();list.add("hello");......
  • ArrayList遍历, 元素查找
    1,ArrayList集合的遍历与数组类似,都可以使用foreach语句string[]str1={"a","b","c","d","e","f"};ArrayListList=newArrayList(str1);foreach(variteminList)......
  • ArrayList元素的删除(4种函数)
    1Clear()方法Clear()方法用来从ArrayList中移除所有元素,语法格式如下。string[]str1={"a","b","c"};ArrayListList=newArrayList(str1);List.Clear();2Remove()方法Remove()方法用来从ArrayList中移除特定对象的第一个......
  • ArrayList声明,Add(), Insert();
     ArrayList提供了3个构造器,通过这3个构造器可以有3种声明方式。(1)默认构造器,会以默认大小(16位)初始化内部数组。构造器格式如下。ArrayListList=newArrayList();//实例化一个ArrayList,命名为List;for(inti=0;i<10;i++)//添加10个元素......
  • ArrayList动态扩容机制(长度可变原理)
    ArrayList底层是数组结构的,数组的默认长度为10。当数组添加满了后,会自动扩容为1.5倍。原理讲解:1.用空参构造函数创建ArrayList集合容器。测试代码:publicclassArrayListDemo{publicstaticvoidmain(String[]args){//创建ArrayList集合容器......
  • 深入理解 Java 中 ArrayList 的底层原理
    在这篇博客中,我们将深入探讨ArrayList的底层实现原理,并通过逐步剖析ArrayList的源码来理解其内部工作机制。我们将重点关注ArrayList的创建、元素添加、扩容机制等关键点。创建ArrayList集合对象ArrayList<String>list=newArrayList<>();使用空参构造器创建ArrayList集合......
  • Java中ArrayList集合—基础详解(知识点+代码示例)
    ArrayList(集合)ArrayList(集合)ArrayList(集合)10.1ArrayList成员方法10.2集合练习10.2.1添加字符串10.2.2添加数字10.2.3添加学生对象并遍历10.2.4集合概述:集合可以直接存储引用数据类型,不能直接存储基本数据类型,如果要存储基本数据类型,需要将基本数据类型变成对......