
package com.itheima.arraylist;
import java.util.ArrayList;
import java.util.Scanner;
/*
案例:学生信息系统:展示数据,按照学号完成搜索
学生类信息(学号,姓名,性别,班级)
测试数据:
"20180302","叶孤城",23,"护理一班"
"20180303","东方不败",23,"护理二班"
"20180304","西门吹雪",26,"护理三班"
"20180305","梅超风",27,"护理四班"
*/
public class ArrayListTest6 {
public static void main(String[] args) {
// 1.定义一个学生类(自己定义一个类可以方便给成员赋值后,返回成员)
// 2.创建集合存储学生对象,创建学生对象封装学生信息
// 把学生对象添加到集合中去
ArrayList<Student> students = new ArrayList<>();
// list集合对象用集合方法add,
students.add(new Student( "20180302","叶孤城",23,"护理一班"));
students.add(new Student("20180303","东方不败",23,"护理二班"));
students.add(new Student("20180304","西门吹雪",26,"护理三班"));
students.add(new Student("20180305","梅超风",27,"护理四班"));
// 3.遍历这些学生的信息展示:
System.out.println("学号:\t名称\t年龄\t班级");
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
System.out.println(s.getStudyNumber() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getClassName());
}
// 4.自定义方法,按照学号搜索功能
Scanner sc = new Scanner(System.in);
// 定义一个死循环,让用户一直输入(即可一直查询)
while (true){
System.out.println("请输入你要查询的学生对象的学号:");
String studyNumber = sc.next();
// 调用方法查询 // 查询到后返回的是对象地址
Student s = getStudentById(students, studyNumber);
// 判断s中是否存在学生对象地址
if (s == null){
System.out.println("查无此人");
}else {
System.out.println("查询成功,你的信息如下:");
System.out.println(s.getStudyNumber() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getClassName());
}
}
}
/**
* 根据学生的学号查询学生对象的集合
* students 存储全部学生的集合
* studyNumber 搜索学生的学号 // 这两个都作为新参
*/
// 这里的返回值类型是对象(Student类的对象) 所以返回值类型写Student
public static Student getStudentById(ArrayList<Student> students,String studyNumber){
// 1. 遍历全部学生
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
// 查询当前遍历的这个学生对象的学号是否是我们要找的学号
if (s.getStudyNumber().equals(studyNumber)){
return s; // 如果当前学生的学号,和我们查找的学号一样,就返回对象
}
}
// 当整个循环结束后都没有查到,就查无此人
return null;
}
}
// 这是一个新定义的学生类 (自己定义一个类可以方便直接调用方法给成员赋值后,返回成员)
// 每次定义新的类,封装方法,给类赋予对象,就是面向对象编程,(常用)
package com.itheima.arraylist;
public class Student {
private String studyNumber;
private String name;
private int age;
private String className;
public Student() {
}
public Student(String studyNumber, String name, int age, String className) {
this.studyNumber = studyNumber;
this.name = name;
this.age = age;
this.className = className;
}
public String getStudyNumber() {
return studyNumber;
}
public void setStudyNumber(String studyNumber) {
this.studyNumber = studyNumber;
}
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;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
}