1.ArrayList
集合和数组的优势对比:
- 长度可变
- 添加数据的时候不需要考虑索引,默认将数据添加到末尾
1.1 ArrayList类概述
1.2 ArrayList类常用方法
1.2.1 构造方法
方法名 |
说明 |
public ArrayList() |
创建一个空的集合对象 |
1.2.2 成员方法
方法名 |
说明 |
public boolean add(要添加的元素) |
将指定的元素追加到此集合的末尾 |
public boolean remove(要删除的元素) |
删除指定元素,返回值表示是否删除成功 |
public E remove(int index) |
删除指定索引处的元素,返回被删除的元素 |
public E set(int index,E element) |
修改指定索引处的元素,返回被修改的元素 |
public E get(int index) |
返回指定索引处的元素 |
public int size() |
返回集合中的元素的个数 |
1.2.3 示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| public class ArrayListDemo02 { public static void main(String[] args) { ArrayList<String> array = new ArrayList<String>();
array.add("hello"); array.add("world"); array.add("java");
System.out.println(array.size());
System.out.println("array:" + array); } }
|
1.3 ArrayList存储字符串并遍历
1.3.1 案例需求
创建一个存储字符串的集合,存储3个字符串元素,使用程序实现在控制台遍历该集合
1.3.2 代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public class ArrayListDemo3 { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>();
list.add("aaa"); list.add("bbb"); list.add("ccc"); list.add("ddd");
System.out.print("["); for (int i = 0; i < list.size(); i++) {
if(i == list.size() - 1){ System.out.print(list.get(i)); }else{ System.out.print(list.get(i) + ", "); } } System.out.print("]"); } }
|
1.4 ArrayList存储学生对象并遍历
1.4.1 案例需求
创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
1.4.2 代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| public class ArrayListDemo4 { public static void main(String[] args) { ArrayList<Student> list = new ArrayList<>();
Student s1 = new Student("zhangsan",16); Student s2 = new Student("lisi",15); Student s3 = new Student("wangwu",18);
list.add(s1); list.add(s2); list.add(s3);
for (int i = 0; i < list.size(); i++) { Student stu = list.get(i); System.out.println(stu.getName() + ", " + stu.getAge()); }
} }
|
1.5 查找用户的索引
需求:
1,main方法中定义一个集合,存入三个用户对象。
用户属性为:id,username,password
2,要求:定义一个方法,根据id查找对应的学生信息。
如果存在,返回索引
如果不存在,返回-1
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| public class ArrayListDemo6 { public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
User u1 = new User("heima001", "zhangsan", "123456"); User u2 = new User("heima002", "lisi", "1234"); User u3 = new User("heima003", "wangwu", "1234qwer");
list.add(u1); list.add(u2); list.add(u3);
int index = getIndex(list, "heima001");
System.out.println(index);
}
public static int getIndex(ArrayList<User> list, String id) { for (int i = 0; i < list.size(); i++) { User u = list.get(i); String uid = u.getId(); if(uid.equals(id)){ return i; } } return -1; } }
|
1.6 判断用户的是否存在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| public class ArrayListDemo5 { public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
User u1 = new User("heima001","zhangsan","123456"); User u2 = new User("heima002","lisi","12345678"); User u3 = new User("heima003","wangwu","1234qwer");
list.add(u1); list.add(u2); list.add(u3);
boolean result = contains(list, "heima001"); System.out.println(result);
}
public static boolean contains(ArrayList<User> list, String id){
for (int i = 0; i < list.size(); i++) { User u = list.get(i); String uid = u.getId(); if(id.equals(uid)){ return true; } } return false; }
}
|
2.学生管理系统
2.1学生管理系统实现步骤
案例需求
针对目前我们的所学内容,完成一个综合案例:学生管理系统。该系统主要功能如下:
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序
实现步骤
定义学生类,包含以下成员变量
private String sid // 学生id
private String name // 学生姓名
private String age // 学生年龄
private String address // 学生所在地
学生管理系统主界面的搭建步骤
2.1 用输出语句完成主界面的编写
2.2 用Scanner实现键盘输入
2.3 用switch语句完成选择的功能
2.4 用循环完成功能结束后再次回到主界面
学生管理系统的添加学生功能实现步骤
3.1 定义一个方法,接收ArrayList集合
3.2 方法内完成添加学生的功能
①键盘录入学生信息
②根据录入的信息创建学生对象
③将学生对象添加到集合中
④提示添加成功信息
3.3 在添加学生的选项里调用添加学生的方法
学生管理系统的查看学生功能实现步骤
4.1 定义一个方法,接收ArrayList集合
4.2 方法内遍历集合,将学生信息进行输出
4.3 在查看所有学生选项里调用查看学生方法
学生管理系统的删除学生功能实现步骤
5.1 定义一个方法,接收ArrayList集合
5.2 方法中接收要删除学生的学号
5.3 遍历集合,获取每个学生对象
5.4 使用学生对象的学号和录入的要删除的学号进行比较,如果相同,则将当前学生对象从集合中删除
5.5 在删除学生选项里调用删除学生的方法
学生管理系统的修改学生功能实现步骤
6.1 定义一个方法,接收ArrayList集合
6.2 方法中接收要修改学生的学号
6.3 通过键盘录入学生对象所需的信息,并创建对象
6.4 遍历集合,获取每一个学生对象。并和录入的修改学生学号进行比较.如果相同,则使用新学生对象替换当前学生对象
6.5 在修改学生选项里调用修改学生的方法
退出系统
使用System.exit(0);退出JVM
2.2学生类的定义
1 2 3 4 5 6 7 8 9 10 11
| package com.itheima.studentsystem;
public class Student { private String id; private String name; private int age; private String address;
}
|
2.3测试类的定义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
| public class StudentSystem { public static void main(String[] args) { ArrayList<Student> list = new ArrayList<>(); loop: 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("请输入您的选择:"); Scanner sc = new Scanner(System.in); String choose = sc.next(); switch (choose) { case "1" -> addStudent(list); case "2" -> deleteStudent(list); case "3" -> updateStudent(list); case "4" -> queryStudent(list); case "5" -> { System.out.println("退出"); System.exit(0); } default -> System.out.println("没有这个选项"); } } }
public static void addStudent(ArrayList<Student> list) { Student s = new Student();
Scanner sc = new Scanner(System.in); String id = null; while (true) { System.out.println("请输入学生的id"); id = sc.next(); boolean flag = contains(list, id); if(flag){ System.out.println("id已经存在,请重新录入"); }else{ s.setId(id); break; } }
System.out.println("请输入学生的姓名"); String name = sc.next(); s.setName(name);
System.out.println("请输入学生的年龄"); int age = sc.nextInt(); s.setAge(age);
System.out.println("请输入学生的家庭住址"); String address = sc.next(); s.setAddress(address);
list.add(s);
System.out.println("学生信息添加成功"); }
public static void deleteStudent(ArrayList<Student> list) { Scanner sc = new Scanner(System.in); System.out.println("请输入要删除的id"); String id = sc.next(); int index = getIndex(list, id); if(index >= 0){ list.remove(index); System.out.println("id为:" + id + "的学生删除成功"); }else{ System.out.println("id不存在,删除失败"); } }
public static void updateStudent(ArrayList<Student> list) { Scanner sc = new Scanner(System.in); System.out.println("请输入要修改学生的id"); String id = sc.next();
int index = getIndex(list, id);
if(index == -1){ System.out.println("要修改的id" + id + "不存在,请重新输入"); return; }
Student stu = list.get(index);
System.out.println("请输入要修改的学生姓名"); String newName = sc.next(); stu.setName(newName);
System.out.println("请输入要修改的学生年龄"); int newAge = sc.nextInt(); stu.setAge(newAge);
System.out.println("请输入要修改的学生家庭住址"); String newAddress = sc.next(); stu.setAddress(newAddress);
System.out.println("学生信息修改成功");
}
public static void queryStudent(ArrayList<Student> list) { if (list.size() == 0) { System.out.println("当前无学生信息,请添加后再查询"); return; }
System.out.println("id\t\t姓名\t年龄\t家庭住址"); for (int i = 0; i < list.size(); i++) { Student stu = list.get(i); System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getAddress()); } }
public static boolean contains(ArrayList<Student> list, String id) {
return getIndex(list,id) >= 0; }
public static int getIndex(ArrayList<Student> list, String id){ for (int i = 0; i < list.size(); i++) { Student stu = list.get(i); String sid = stu.getId(); if(sid.equals(id)){ return i; } } return -1; } }
|