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<>();
注意:<>
代表泛型,但要注意的是泛型里不可以添加八种基本数据类型,但是就要添加怎么办呢?可以添加这八种基本数据类型对应的包装类。 如下:
基本数据类型 | 对应的包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
注:到现在为止,我们发现打印对象名时,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("要删除的学号不存在");
}
}