一、ArrayList
1.什么是ArrayList
ArrayList就是动态数组他的数组长度可以发生变化
2.<>有什么作用
<>中的那个表示泛型也就是装在集合当中的所有元素全部都是统一的类型
3.ArrayList使用前提
//引入相应的jar包
import java.util.ArrayList;
4.ArrayList的创建
ArrayList<Student> list = new ArrayList<>();
//此处泛型为Student型,表示这个集合里面就只能添加Student对象
此处list的每一个元素都是Student类型的对象,Student类型的对象在Student类中构造
5.ArrayList的各种基本操作:添加,删除,获取
(1)String类型
import java.util.ArrayList;
public class arraylist {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<>();// 此处泛型中为String型因此只能往里面添加String类型的值
System.out.println(list1);
System.out.println();
// 向集合中添加元素:add()
System.out.println("添加了以下元素");
list1.add("我爱c语言");
list1.add("我爱c++");
list1.add("我爱Java");
list1.add("我爱python");
System.out.println(list1);
System.out.println();
// 获取集合的长度尺寸:size()
int size = list1.size();
System.out.println("该集合的长度为:" + size);
System.out.println();
// 从集合中获取元素:get()
String course = list1.get(2);
System.out.println("第2号位置的元素:" + course);// 获取某个值
for (int i = 0; i < list1.size(); i++) {// 遍历获取所有值
System.out.println("第" + i + "号位置的元素:" + list1.get(i));
}
System.out.println();
// 从集合中删除元素:remove()
String deleate = list1.remove(2);
System.out.println("被删除的一项是" + deleate);
System.out.println(list1);
for (int i = 0; i < list1.size(); i++) {// 遍历获取所有值,此刻集合中已经没有java
System.out.println("第" + i + "个位置的元素是" + list1.get(i));
}
System.out.println();
}
}
/*
* 运行结果 添加了以下元素
* [我爱c语言, 我爱c++, 我爱Java, 我爱python]
*
* 该集合的长度为:4
*
* 第2号位置的元素:我爱Java
* 第0号位置的元素:我爱c语言
* 第1号位置的元素:我爱c++
* 第2号位置的元素:我爱Java
* 第3号位置的元素:我爱python
*
* 被删除的一项是我爱Java
* [我爱c语言, 我爱c++, 我爱python]
* 第0个位置的元素是我爱c语言
* 第1个位置的元素是我爱c++
* 第2个位置的元素是我爱python
*/
(2)int类型
与String相类似,但对于ArrayList对象,它是不能存储基本类型的,只能存储引用类型的数据,所以想要存储基本数据类型,需要将<>中的泛型改成对应的包装类型。即将泛型中的值改为Integer。
import java.util.ArrayList;
public class arraylist {
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<>();// 此处泛型中为String型因此只能往里面添加String类型的值
System.out.println(list1);
System.out.println();
// 向集合中添加元素:add()
System.out.println("添加了以下元素");
list1.add(1);
list1.add(2);
list1.add(3);
list1.add(4);
System.out.println(list1);
System.out.println();
// 获取集合的长度尺寸:size()
int size = list1.size();
System.out.println("该集合的长度为:" + size);
System.out.println();
// 从集合中获取元素:get()
Integer num = list1.get(2);
System.out.println("第2号位置的元素:" + num);// 获取某个值
for (int i = 0; i < list1.size(); i++) {// 遍历获取所有值
System.out.println("第" + i + "号位置的元素:" + list1.get(i));
}
System.out.println();
// 从集合中删除元素:remove()
Integer deleate = list1.remove(2);
System.out.println("被删除的一项是" + deleate);
System.out.println(list1);
for (int i = 0; i < list1.size(); i++) {// 遍历获取所有值,此刻集合中已经没有java
System.out.println("第" + i + "个位置的元素是" + list1.get(i));
}
System.out.println();
}
}
/*
* 运行结果
* 添加了以下元素
* [1, 2, 3, 4]
*
* 该集合的长度为:4
*
* 第2号位置的元素:3
* 第0号位置的元素:1
* 第1号位置的元素:2
* 第2号位置的元素:3
* 第3号位置的元素:4
*
* 被删除的一项是3
* [1, 2, 4]
* 第0个位置的元素是1
* 第1个位置的元素是2
* 第2个位置的元素是4
*/
(3)其他类型
基本类型 包装类型
byte Byte
short Short
long Long
float Float
double Double
char Character
boolean Boolean
二、简单的学生成绩管理系统
1.Demo类:演示类,用于进行各种操作
此类中有主函数来调用各个类中的函数从而使得整个系统成为一个有机整体
在此类中需要通过输入各种值来判断应该进行的操作
package studentScore;
import java.util.Scanner;//调用输入包
public class Demo {
public static void main(String[] args) {
Face face = new Face();
Operate operate = new Operate();
face.menu();// 调用Demo类中的memu方法打印菜单
Scanner in = new Scanner(System.in);
while (true) {// 无限循环直到正常结束程序
System.out.println("请选择需要进行的操作:");
int num = in.nextInt();
switch (num) {
case 1:// 输入1 添加学生信息
operate.add();// 调用Operate类中add方法
break;
case 2:// 输入2 打印学生信息
operate.print();// 调用Operate类中print方法
break;
case 3:// 输入3 查找学生信息并打印
operate.find();// 调用Operate类中find方法
break;
case 4:
System.out.println("感谢您的使用!");
System.exit(0);// 正常结束程序
}
}
}
}
2.Student类:学生类,用于构造各种学生属性
package studentScore;
public class Student {
String id;
String name;
double grade;
public void setId(String id) // 给id属性赋值
{
this.id = id;
}
public String getId() // 取得id属性值
{
return this.id;
}
public void setName(String name) // 给name属性赋值
{
this.name = name;
}
public String getName() // 取得name属性值
{
return this.name;
}
public void setGrade(double grade) // 给grade属性赋值
{
this.grade = grade;
}
public double getGrade() // 取得grade属性值
{
return this.grade;
}
public Student() // 无参构造
{
}
public Student(String id, String name, double grade) // 有参构造
{
this.id = id;
this.name = name;
this.grade = grade;
}
}
3.Face类:界面类,用于生成界面
该类用于生成此系统刚打开时的界面
该界面需要说明整个系统包含的操作以及操作方法
有添加学生信息,查询学生信息,显示所有学生信息以及退出操作
package studentScore;
public class Face {
public static void menu() {
System.out.println("欢迎来到学生成绩管理系统!");
System.out.println("****请选择所需要的操作****");
System.out.println("******1.添加学生信息******");
System.out.println("******2.查询学生信息******");
System.out.println("******3.显示学生信息******");
System.out.println("******4.退出*************");
}
}
4.Operate类:操作类,用于各种操作
此处需要定义一个ArrayList集合用于存放Student类型数据
这个类包含添加学生操作,显示学生操作,查找学生操作
添加学生操作因为比较繁琐,因此再次调用了一个addMessage方法,在该方法中分别给id,name,grage赋值,然后再将student类型的值返回给add
显示学生操作为显示所有学生的所有信息,因此需要遍历集合,输出每一个属性
查找学生操作是根据学生的学号,遍历集合,寻找到满足条件的那一个,再将其打印出来
package studentScore;
import java.util.ArrayList;//调用集合包
import java.util.Scanner;//调用输入包
public class Operate {
ArrayList<Student> list = new ArrayList<>();// 创建一个集合,其对象为Student类
Scanner in = new Scanner(System.in);
public void add() { // 添加学生信息
list.add(addMessage());// 调用addMessage()函数给
System.out.println("完成添加!");
}
public void print() { // 显示学生信息
System.out.println("以下为所有学生信息");
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
int a = i + 1;
System.out.println("第" + a + "位学生学号:" + stu.getId() + " 第" + a + "位学生名字:" + stu.getName() + " 第" + a
+ "位学生成绩:" + stu.getGrade());
}
System.out.println("一共有" + list.size() + "个学生的信息!");
}
public void find() { // 查找学生信息
System.out.println("请输入要查找的学生学号:");
String id = in.next();
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);// 将集合中第i个值赋值给stu
if (stu.getId().equals(id)) {// 对学生的学号进行判断,如果存在打印出来
System.out.println("查找成功!");
System.out.println("该学生学号:" + stu.getId() + " 该学生名字:" + stu.getName() + " 该学生成绩:" + stu.getGrade());
}
}
}
public Student addMessage() { // 给集合输入学生信息
Student student = new Student();
System.out.println("请输入要添加的学生学号:");
String id = in.next();
student.setId(id);
System.out.println("请输入要添加的学生姓名:");
String name = in.next();
student.setName(name);
System.out.println("请输入要添加的学生成绩:");
double grade = in.nextDouble();
student.setGrade(grade);
return student;// 返回student类型的值
}
}
三:系统运行演示
/*
* 运行结果欢迎来到学生成绩管理系统!
**** 请选择所需要的操作****
****** 1.添加学生信息******
****** 2.查询学生信息******
****** 3.显示学生信息******
****** 4.退出生成绩管理系统
* 请选择需要进行的操作:
* 1
* 请输入要添加的学生学号:
* 2021400001
* 请输入要添加的学生姓名:
* 康茹
* 请输入要添加的学生成绩:
* 520
* 完成添加!
* 请选择需要进行的操作:
* 1
* 请输入要添加的学生学号:
* 2022400002
* 请输入要添加的学生姓名:
* 李湘
* 请输入要添加的学生成绩:
* 521
* 完成添加!
* 请选择需要进行的操作:
* 3
* 请输入要查找的学生学号:
* 2021400001
* 查找成功!
* 该学生学号:2021400001 该学生名字:康茹 该学生成绩:520.0
* 请选择需要进行的操作:
* 2
* 以下为所有学生信息
* 第1位学生学号:2021400001 第1位学生名字:康茹 第1位学生成绩:520.0
* 第2位学生学号:2022400002 第2位学生名字:李湘 第2位学生成绩:521.0
* 一共有2个学生的信息!
* 请选择需要进行的操作:
* 4
* 感谢您的使用!
*/