集合的特点:
1.提供一种存储空间可变的存储模型,存储的数据容量可以发生改变。
1.ArrayList构造方法和添加方法:
- ArrayList list=new ArrayList():创建一个空的集合对象,初始容量为10.
- list.add(E e):只能是引用数据类型,但是底层会将基本数据类型转成引用数据类型。
- 直接打印集合:集合对象底层也有优化,直接打印不会打印出地址值,而是把数据值打印出来。
- list.add(int index,E element):指定位置存储数据。
2.ArrayList是泛型:ArrayList<E>
在出现E的地方我们使用引用数据类型(也可以使用基本数据类型对应的包装类)替换就可以指定集合只存储这个数据类型的值。
3.ArrayList集合常用方法
- boolean remove(Object o):删除指定的元素
- E remove(int index):删除指定索引处的元素
- E set(int index,E element):修改指定索引处的元素
- E get(int index):返回指定索引处的元素
- int size():返回集合中元素的个数
4.基于ArrayList的简单学生管理系统(控制台)
package students;
import java.util.ArrayList;
import java.util.Scanner;
public class StuMgr {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
ArrayList<Student> list=new ArrayList<>();
// loop:
while (true){
//主界面
System.out.println("=========================欢迎使用本学生管理系统=========================");
System.out.println("请选择以下功能:1.添加学生\t2.删除学生\t3.修改学生\t4.查询学生\t5.退出系统");
String choice=sc.next();
switch (choice){
case "1":
System.out.println("***已选择添加学生***");
addStudent(list);
break;
case "2":
System.out.println("***已选择删除学生***");
deleteStudent(list);
break;
case "3":
System.out.println("***已选择修改学生***");
updateStudent(list);
break;
case "4":
System.out.println("***已选择查询学生***");
queryStudents(list);
break;
case "5":
System.out.println("***已选择退出系统***");
// break loop;
return;
default:
System.out.println("***请按要求点击***");
break ;
}
}
}
//根据学号删除
private static void deleteStudent(ArrayList<Student> stus) {
System.out.println("***请输入要删除的学号***");
Scanner sc=new Scanner(System.in);
String id=sc.next();
int index=getIndex(stus,id);
if (index==-1){
System.out.println("***该学号不存在***");
}else {
stus.remove(index);
System.out.println("***删除成功***");
}
}
//添加学生的功能:
public static void addStudent(ArrayList<Student> stus){
Scanner sc=new Scanner(System.in);
System.out.println("***请输入学号***");
String id;
while (true){
id=sc.next();
int index=getIndex(stus,id);
if (index==-1){
break;
}
System.out.println("***重复了,请重新输入学号***");
}
System.out.println("***请输入姓名***");
String name=sc.next();
System.out.println("***请输入年龄***");
int age= sc.nextInt();
System.out.println("***请输入生日***");
String birthday=sc.next();
Student student=new Student(id,name,age,birthday);
stus.add(student);
System.out.println("***添加成功***");
}
//查看所有学生
public static void queryStudents(ArrayList<Student> stus){
if (stus.size()==0){
System.out.println("***目前还没有任何学生***");
return;
}
//表头
System.out.println("学号\t\t姓名\t年龄\t生日");
for (int i = 0; i < stus.size(); i++) {
Student stu=stus.get(i);
String id=stu.getId();
String name=stu.getName();
int age=stu.getAge();
String birthday=stu.getBirthday();
System.out.println(id+"\t\t"+name+"\t "+age+" \t"+birthday);
}
}
//查找指定学号的索引。
public static int getIndex(ArrayList<Student> stus,String id){
for (int i = 0; i < stus.size(); i++) {
Student student=stus.get(i);
String stuId=student.getId();
if (stuId.equals(id)){
return i;
}
}
return -1;
}
//修改学生信息
public static void updateStudent(ArrayList<Student> stus){
System.out.println("***请输入要修改的学生学号***");
Scanner sc=new Scanner(System.in);
String id=sc.next();
int index=getIndex(stus,id);
if (index==-1){
System.out.println("***学号不存在***");
return;
}
System.out.println("***请输入新姓名***");
String name=sc.next();
System.out.println("***请输入新年龄***");
int age= sc.nextInt();
System.out.println("***请输入新生日***");
String birthday=sc.next();
Student student = stus.get(index);
student.setAge(age);
student.setName(name);
student.setBirthday(birthday);
System.out.println("***更改成功***");
}
}
JavaBean类
public class Student { private String id; private String name; private int age; private String birthday;