一、数组回顾
格式:
数据类型[] 数组名=new 数据类型[m];
数据类型:基本类型,引用类型
举例:
int[] arr=new int[3]; //int类型的数组
arr[0]=10; //元素基本类型的值
String[] arr=new String[3];//String类型的数组
arr[0]="hello";//元素是String的对象
arr[1]=new String("hello"); //元素是String的对象
Dog[] ds=new Dog[3]; //Dog类型的数组
ds[0]=new Dog();//元素是Dog对象
数组的局限性
1)元素类型是固定的
2)数组的长度是固定的
二、ArrayList集合
概述:Java的API中,为我们提供了一个类ArrayList来表示集合
集合理解:
1)集合是一个容器,只能装对象
2)集合可以存储任意类型
3)集合的长度是可变的
ArrayList构造方法
ArrayList()
创建一个没有任何元素ArrayList对象(也就是创建了一个空的容器)
举例:
//<String>表示ArrayList集合只能存储Stirng类型的数据
ArrayList<String> list=new ArrayList<String>();
【注意】如果存储int类型,<>中必须写成Integer
ArrayList常见方法
集合给我们提供了增,删,改,查的一些方法,方便对集合中的元素进行管理,如下
boolean add(E e)
向集合中添加元素,添加到集合的末尾
void add(int index,E e)
向集合中添加元素,添加到集合的指定索引位置
E get(int index)
获取指定索引位置的元素
E remove(int index)
根据索引删除元素,把被删除的元素返回
E set(int index,E e)
根据索引修改元素,返回被修改的元素
int size()
获取集合的长度
public class Demo1 {
public static void main(String[] args) {
//创建ArrayList集合对象
ArrayList<String> list=new ArrayList<String>();
//ArrayList提供了 添加,删除,修改,查询等方法
//add方法,添加元素
list.add("java");
list.add("Hello");
list.add("android");
list.add("php");
//get方法,根据索引获取元素
String s1=list.get(1);
System.out.println(s1);//结果: "Hello"
//size方法,获取长度
int size=list.size();
System.out.println(size);//结果:4
//E set(int index, E element) 根据索引修改元素
list.set(0, "JAVA");//把0索引的元素,修改成"JAVA"
System.out.println(list);//结果:[JAVA,Hello,android,php
//E remove(int index) 根据指定的索引删除元素
list.remove(2); //删除2索引位置的元素
System.out.println(list);//
}
}
三、集合的练习
-
1.创建一个集合,存储String类型的元素,把最后一个元素置顶
public static void method1{
ArrayList<String> list=new ArrayList<String>();
list.add("能约你吃饭吗");
list.add("可以");
list.add("你带钱没有");
list.add("带了支付宝了");
System.out.println(list);
//把最后一个元素移除,并且把被移除的元素放在0索引位置
list.add(0, list.remove(list.size()-1));
System.out.println(list);
}
-
2.创建一个集合,存储Student类型的对象,求最大年龄的那个学生
public static void method2(){
ArrayList<Student> list=new ArrayList<Student>();
list.add(new Student("张三",18));
list.add(new Student("李四",20));
list.add(new Student("王五",30));
list.add(new Student("赵六",19));
//从集合中获取0索引位置的元素,假设是最大值
Student max=list.get(0);
//让max的年龄,和其他的每一个学生对象的年龄进行比较
for (int i = 0; i <list.size() ; i++) {
Student stu = list.get(i);
if(stu.getAge()>max.getAge()){
max=stu;
}
}
System.out.println(max.getName()+"..."+max.getAge());
}
四、学生管理系统的步骤
1)定义Student类
学号,姓名,年龄,居住地
构造方法
get和set
2)创建一个StudentManger类,要有主方法
a: 写主界面
System.out.println("--------欢迎来到学生管理系统,请选择:--------");
System.out.println("1 查看所有学生");
System.out.println("2 添加学生");
System.out.println("3 删除学生");
System.out.println("4 修改学生");
System.out.println("5 退出");
System.out.println("请输入你的选择:");
b: 根据主页面的提示 键盘录入
Scanner sc = new Scanner(System.in);
String choiceString = sc.nextLine();
c: 对录入的指令,使用switch进行匹配,为了能够重复执行,在switch语句外面套一层while循环
while(true){
System.out.println("--------欢迎来到学生管理系统,请选择:--------");
System.out.println("1 查看所有学生");
System.out.println("2 添加学生");
System.out.println("3 删除学生");
System.out.println("4 修改学生");
System.out.println("5 退出");
System.out.println("请输入你的选择:");
//对输入的选项进行匹配
switch (choiceString) {
case "1":
break;
case "2":
break;
case "3":
break;
case "4":
break;
case "5":
default:
System.out.println("谢谢你的使用 ");
System.exit(0);
break;
}
}
d:测试一下,如果没有问题,再继续完成后续的各个功能
每一个功能写成一个方法
//查询功能
public static void findAllStudent(ArrayList<Student> array) {
if (array.size() == 0) {
System.out.println("不好意思,目前没有学生信息可供查看,请回去重新选择你的操作");
return;
}
System.out.println("学号\t\t姓名\t年龄\t居住地");
for (int x = 0; x < array.size(); x++) {
Student s = array.get(x);
System.out.println(s.getId() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getAddress());
}
}
//添加功能
public static void addStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
String id;
while (true) {
System.out.println("请输入学号:");
id = sc.nextLine();
boolean flag = false;
for (int x = 0; x < array.size(); x++) {
Student s = array.get(x);
if (s.getId().equals(id)) {
flag = true;
}
}
if (flag == true) {
System.out.println("你输入的学号已经被占用,请重新输入");
} else {
break;
}
}
System.out.println("请输入姓名:");
String name = sc.nextLine();
System.out.println("请输入年龄:");
String age = sc.nextLine();
System.out.println("请输入地址:");
String address = sc.nextLine();
Student s = new Student();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAddress(address);
array.add(s);
System.out.println("添加学生成功");
}
//删除功能
public static void deleteStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要删除学生的学号:");
String id = sc.nextLine();
int index = -1;
for (int x = 0; x < array.size(); x++) {
Student s = array.get(x);
if (s.getId().equals(id)) {
index = x;
break;
}
}
if (index != -1) {
array.remove(index);
System.out.println("删除学生成功");
} else {
System.out.println("不好意思,你要删除的学号对应的学生信息不存在,请回去重新选择你的操作");
return;
}
}
//修改功能
public static void updateStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要修改学生的学号:");
String id = sc.nextLine();
int index = -1;
for (int x = 0; x < array.size(); x++) {
Student s = array.get(x);
if (s.getId().equals(id)) {
index = x;
break;
}
}
if (index != -1) {
System.out.println("请输入新姓名:");
String name = sc.nextLine();
System.out.println("请输入新年龄:");
String age = sc.nextLine();
System.out.println("请输入新地址:");
String address = sc.nextLine();
Student s = new Student();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAddress(address);
array.set(index, s);
System.out.println("修改学生成功");
} else {
System.out.println("不好意思,你要修改的学号对应的学生信息不存在,请回去重新选择你的操作");
return;
}
}