【基础篇-Day9:JAVA集合的介绍和数组的使用】

1、集合

1.1 集合的概念

在这里插入图片描述

JAVA中的集合有很多,如下所示:
在这里插入图片描述
今天先介绍ArrayList集合,为了介绍ArrayList集合,先要了解为什么集合的长度是可变的,下面来看。

1.2 ArrayList长度可变原理

在这里插入图片描述

1.3 集合和数组的使用场景

虽然说,有了集合,可以代替数组,但是为了不浪费空间,还需要根据不同的场景,选择性的去使用这两种容器。下面是建议:

在这里插入图片描述

1.4 ArrayList快速入门

  • 1、构造方法:public ArrayList(),创建一个空的集合容器;
package com.itheima.arrayList;
import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();//创建容器
        list.add("张三");//给容器放值
        list.add("李四");
        System.out.println(list);//输出:[张三, 李四]
    }
}
  • 2、集合容器创建细节:如果不对集合所装内容,做类型的限制,则可能会发生一些意想不到的问题。按如下所示在创建容器时,指定类型即可。
ArrayList<String> list = new ArrayList<>();

注意:<>代表泛型,但要注意的是泛型里不可以添加八种基本数据类型,但是就要添加怎么办呢?可以添加这八种基本数据类型对应的包装类。 如下:

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

注:到现在为止,我们发现打印对象名时,String、StringBuilder、ArrayList都是直接输出内容,而非地址值。

1.5 ArrayList常用的成员方法

在这里插入图片描述

1.5.1 添加

public boolean add(E e):将指定元素添加到此列表的末尾。注意,这个方法是有返回值的,添加成功返回true,添加失败返回false。

ArrayList<String> list = new ArrayList<>();//创建容器
list.add("张三");//给容器放值
list.add("李四");

public void add(int index, E element):将指定元素插入到此列表的指定位置。

ArrayList<String> list = new ArrayList<>();//创建容器
list.add("张三");
list.add("李四");
list.add("王五");
list.add(1, "二六子");//在索引1位置添加元素,原来元素依次向后移动一位

1.5.2 删除

public E remove(int index):根据索引做删除,返回删除的元素。

ArrayList<String> list = new ArrayList<>();//创建容器
list.add("张三");
list.add("李四");
list.add("王五");
list.remove(1);//删除李四,返回值为李四

public boolean remove(Object o):根据元素做删除,返回是否删除成功的状态。

ArrayList<String> list = new ArrayList<>();//创建容器
list.add("张三");
list.add("李四");
list.add("王五");
list.remove("李四");//删除李四,返回值是否删除成功的状态

1.5.3 修改

public E set(int index, E element):修改索引位置为对应的元素

ArrayList<String> list = new ArrayList<>();//创建容器
list.add("张三");
list.add("李四");
list.add("王五");
list.set(1, "马四");//将李四修改为马四,返回值为被覆盖掉的值

1.5.4 查询

public E get(int index):根据索引获取对应位置的元素。

ArrayList<String> list = new ArrayList<>();//创建容器
list.add("张三");
list.add("李四");
list.add("王五");
String res = list.get(1);//获取索引为1的元素

public int size():返回集合中元素的个数。

ArrayList<String> list = new ArrayList<>();//创建容器
list.add("张三");
list.add("李四");
list.add("王五");
int size = list.size();//返回集合中元素的个数 

2、使用集合编写学生管理系统

  • Main.java文件:
package com.itheima.studentsystem.service;
import com.itheima.studentsystem.vo.Student;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("==========欢迎来到学生管理系统==========");
        Scanner sc = new Scanner(System.in);
        StudentSystemService ss = new StudentSystemService();//处理类
        ArrayList<Student> students = new ArrayList<>();//数据库
        lo:
        while (true) {
            System.out.println("1-添加学生信息");
            System.out.println("2-查看学生信息");
            System.out.println("3-修改学生信息");
            System.out.println("4-删除学生信息");
            System.out.println("5-退出");
            System.out.println("请输入您的选择:");
            int choose = sc.nextInt();
            switch (choose){
                case 1:
                    ss.addStudentInfo(students);
                    break;
                case 2:
                    ss.queryStudentInfo(students);
                    break;
                case 3:
                    ss.updateStudentInfo(students);
                    break;
                case 4:
                    ss.deleteStudentInfo(students);
                    break;
                case 5:
                    System.out.println("退出成功");
                    break lo;
                default:
                    System.out.println("您的选择不正确,请重新输入!");
                    break;
            }
        }
    }
}
  • Student.java文件:
package com.itheima.studentsystem.vo;
public class Student {
    private int id;
    private String name;
    private int age;
    private String phone;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    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 getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    @Override
    public String toString() {
        return "学生信息:{" +
                "学号=" + id +
                ", 姓名='" + name + '\'' +
                ", 年龄=" + age +
                ", 电话='" + phone + '\'' +
                '}';
    }
}
  • StudentSystemService.java文件:
package com.itheima.studentsystem.service;
import com.itheima.studentsystem.vo.Student;
import java.util.ArrayList;
import java.util.Scanner;

public class StudentSystemService {
    public void addStudentInfo(ArrayList<Student> students){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学号:");
        int id = sc.nextInt();
        System.out.println("请输入姓名:");
        String name = sc.next();
        System.out.println("请输入年龄:");
        int age = sc.nextInt();
        System.out.println("请输入电话:");
        String phone = sc.next();

        for (int i = 0; i < students.size(); i++) {
            if (students.get(i).getId() == id){
                System.out.println("要添加的学号已存在:" + students.get(i).toString());
                return;
            }
        }

        Student s = new Student();
        s.setId(id);
        s.setName(name);
        s.setAge(age);
        s.setPhone(phone);

        students.add(s);
        System.out.println("添加成功");
    }

    public void queryStudentInfo(ArrayList<Student> students){
        if (students.isEmpty()){
            System.out.println("还没有学生信息");
            return;
        }

        for (int i = 0; i < students.size(); i++) {
            System.out.println(students.get(i).toString());
        }
        System.out.println("查看成功");
    }

    public void updateStudentInfo(ArrayList<Student> students){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改学生的学号:");
        int oldId = sc.nextInt();
        for (int i = 0; i < students.size(); i++) {
            if (students.get(i).getId() == oldId){
                System.out.println("请输入新的学号:");
                int newId = sc.nextInt();
                System.out.println("请输入新的姓名:");
                String name = sc.next();
                System.out.println("请输入新的年龄:");
                int age = sc.nextInt();
                System.out.println("请输入新的电话:");
                String phone = sc.next();
                students.get(i).setId(newId);
                students.get(i).setName(name);
                students.get(i).setAge(age);
                students.get(i).setPhone(phone);

                System.out.println("修改成功");
                return;
            }
        }

        System.out.println("要修改的学号不存在");
    }

    public void deleteStudentInfo(ArrayList<Student> students){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除学生的学号:");
        int id = sc.nextInt();
        for (int i = 0; i < students.size(); i++) {
            if (students.get(i).getId() == id){
                students.remove(i);
                System.out.println("删除成功");
                return;
            }
        }

        System.out.println("要删除的学号不存在");
    }
}
  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值