3.3、对象数组
对象数组练习:
定义学生类
创建学生数组
创建学生对象
把学生对象作为元素赋值给学生数组
遍历学生数组
package com.datascience.myArray;
/**
* Created by JackFeng on 2020/3/2.
*/
public class StudentDemo {
public static void main(String[] args) {
// 创建学生数组
Student[] students = new Student[3];
//创建学生对象
Student s1 = new Student("荣耀王者", 50);
Student s2 = new Student("星耀", 10);
Student s3 = new Student("王者", 20);
//学生对象 作为元素赋值给学生数组
students[0] = s1;
students[1] = s2;
students[2] = s3;
//遍历学生数组
for (int i = 0; i <students.length ; i++) {
Student s = students[i];
System.out.println(s); //这样输出的是地址值
System.out.println(s.getName()+"====="+s.getAge());
}
}
}
学生类
package com.datascience.myArray;
/**
* Created by JackFeng on 2020/3/2.
*/
// alt + insert 可以快速生成 get/set 方法等
public class Student {
private String name;
private int age;
public Student(String name,int age) {
this.name = name;
this.age = age;
}
public Student() {
}
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;
}
}
3.4、集合ArrayList
ArrayList<E>:
大小可变数组的实现
<E>: 特殊的数据类型:泛型
构造方法:
ArrayList()
添加元素:
pubilc boolean add(E e) --- 添加元素
public void add (int index, E element) --- 指定索引处 添加元素
获取元素:
public E get(int index) ---- 返回指定索引出的元素
集合长度:
public int size() 返回集合中元素的个数
删除元素:
public boolean remove(object o) 删除指定的元素,返回删除是否成功
pubilc E remove(int index) 删除指定索引出的元素,返回被删除的元素
修改元素:
public E set(int index, E element) 修改指定索引出的元素,返回被修改的元素
AarryList(集合)遍历:
size() + get 方法
package com.myArray;
import java.util.ArrayList;
/**
* Created by JackFeng on 2020/3/3.
*/
public class ArrayListDemo {
public static void main(String[] args) {
// 创建集合对象
ArrayList<Object> array = new ArrayList<>();
// 这里如果是String 接受就是String Object 接受就是Object
// add(E e) 添加元素
array.add("hello");
array.add("world");
array.add("Data");
System.out.println(array);
// 在指定索引处添加一个元素
// 第一个位置添加 Science
array.add(1,"Science");
System.out.println("====");
System.out.println("array"+ array);
//获取元素 get
System.out.println(array.get(1));
// 集合长度 size
System.out.println("集合的长度:"+array.size());
// 删除元素 remove
System.out.println("remove:"+array.remove("hello"));
System.out.println("remove:"+array.remove("hello")); // 不存在则失败,这里就是失败了 false
//删除指定元素 remove (int index)
System.out.println("remove:"+ array.remove(1));
// 修改元素 set (int index , E element)
System.out.println("set:"+ array.set(1,"hhha"));
//
System.out.println(array);
// 添加元素
array.add("aaa");
array.add("abc");
array.add("acd");
//遍历集合
System.out.println("================");
for (int i = 0; i <array.size() ; i++) {
System.out.println(array.get(i));
}
// 标准遍历
for (int i = 0; i <array.size() ; i++) {
// object
Object s = array.get(i);
System.out.println(s);
}
}
}
Test
package com.myArray;
import java.util.ArrayList;
import java.util.Scanner;
/**
* Created by JackFeng on 2020/3/3.
*/
/*
*
* 创建一个集合:存储学生对象,学生对象的数据来自键盘录入,最后遍历集合
*
*
* 分析:
* A:定义学生类 String name , String age
* B:创建集合对象
* C:键盘录入数据,创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
* D:把学生对象作为元素存储到集合中
* E:遍历集合
*
* */
public class ArrayListTest {
public static void main(String[] args) {
//创建集合对象
ArrayList<Student> array = new ArrayList<Student>();
//d调用方法
addStudent(array);
addStudent(array);
addStudent(array);
//遍历集合
for (int i = 0; i <array.size() ; i++) {
Student s = array.get(i);
System.out.println(s.getName() +"-------"+ s.getAge());
}
}
/*
* 提高复用性,键盘录入学生信息 封装成一个方法
*
* 两个明确:
* 返回值类型:void
* 参数列表:ArrayList<Student>
*
*
* */
public static void addStudent (ArrayList<Student> array){
//键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入姓名:");
String name = sc.nextLine();
System.out.println("请输入年龄:");
String age = sc.nextLine();
//赋值给成员变量
Student s = new Student();
s.setName(name);
s.setAge(age);
//学生对象存储到集合中
array.add(s);
}
}
简易学生管理系统
步骤:
A:定义学生类
B:主界面的代码编写
C:查看所有学生
D:添加学生
E:修改学生
F:删除学生
Student
package myStudentManager;
/**
* Created by JackFeng on 2020/3/4.
*/
/*
*
* 学生类
* */
public class Student {
private String id;
// 姓名
private String name;
//
private String age;
private String address;
public Student() {
}
public Student(String id, String name, String age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
Test
package myStudentManager;
import java.util.ArrayList;
import java.util.Scanner;
/**
* Created by JackFeng on 2020/3/4.
*/
public class StudentMangerTest {
public static void main(String[] args) {
//创建集合对象,存储学生数据
ArrayList<Student> array = new ArrayList<>();
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 choice = sc.nextLine();
switch (choice) {
case "1":
// 查看所有学生
findAllStudent(array);
break;
case "2":
// 添加学生
addStudent(array);
break;
case "3":
//删除学生
delStudent(array);
break;
case "4":
//修改学生
updataStudent(array);
break;
case "5":
//退出
// break; case 穿透
default:
System.out.println("谢谢你的使用!");
System.exit(0); // jvm 退出
break;
}
}
}
//1 查看所有学生
public static void findAllStudent(ArrayList<Student> array){
// 判断集合中是否有数据,如果没有数据,给出提示,并让该方法不继续往下执行
if (array.size()==0){
System.out.println("不好意思,暂无学生信息,请重新选择你的操作");
return;// void 没有返回值 可以直接return
}
// \t
System.out.println("学号\t\t姓名\t年龄\t地址");
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getId()+"--"+s.getName()+"--"+s.getAge()+"---"+s.getAddress());
}
}
// 添加学生
public static void addStudent(ArrayList<Student> array){
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
// id 定义在外边 因为下边还要用
String id;
// 代码重复使用
while (true){
System.out.println("请输入 学生ID:");
// String id = sc.nextLine();
id = sc.nextLine();
//判断学号是否存在
// 定义标记默认为false
boolean flag = false;
for (int i = 0; i <array.size() ; i++) {
Student s = array.get(i);
if (s.getId().equals(id)){
flag = true; // 说明学号被占用
}
}
if (flag){
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.setAge(age);
s.setName(name);
s.setAddress(address);
// 把学生对象添进 集合
array.add(s);
System.out.println("学生信息添加成功====姓名为:"+s.getName());
}
public static void delStudent(ArrayList<Student> array){
//根据学号删除
Scanner sc = new Scanner(System.in);
System.out.println("请输入要删除学生的学号:");
String id = sc.nextLine();
// 定义一个索引
int index = -1;
//遍历集合
for (int i = 0; i <array.size() ; i++) {
//获取每个学生的对象
Student s = array.get(i);
if (s.getId().equals(id)){
// array.remove(i); // 根据索引删除
index = i;
break;
}
// System.out.println("删除学生成功!");
}
if (index == -1){
System.out.println("不好意思,您输入的学号不存在,请重新输入");
}else {
array.remove(index); // 根据索引删除
System.out.println("删除学生成功");
}
}
// 修改学生
public static void updataStudent(ArrayList<Student> array){
// 创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要修改学生的学号:");
String id = sc.nextLine();
// 定义一个索引
int index = -1;
for (int i = 0; i <array.size() ; i++) {
//获取每一个学生对象
Student s = array.get(i);
if (s.getId().equals(id)){
index = i;
break;
}
}
if (index == -1){
System.out.println("不好意思,你要修改的学生信息不存在,请重新你的选择");
}else {
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.setAddress(address);
s.setAge(age);
// 修改集合中的学生信息
array.set(index, s);
System.out.println("修改学生信息成功");
}
}
}
期待您的进步