image.png

    1. package com.itheima.arraylist;
    2. import java.util.ArrayList;
    3. import java.util.Scanner;
    4. /*
    5. 案例:学生信息系统:展示数据,按照学号完成搜索
    6. 学生类信息(学号,姓名,性别,班级)
    7. 测试数据:
    8. "20180302","叶孤城",23,"护理一班"
    9. "20180303","东方不败",23,"护理二班"
    10. "20180304","西门吹雪",26,"护理三班"
    11. "20180305","梅超风",27,"护理四班"
    12. */
    13. public class ArrayListTest6 {
    14. public static void main(String[] args) {
    15. // 1.定义一个学生类(自己定义一个类可以方便给成员赋值后,返回成员)
    16. // 2.创建集合存储学生对象,创建学生对象封装学生信息
    17. // 把学生对象添加到集合中去
    18. ArrayList<Student> students = new ArrayList<>();
    19. // list集合对象用集合方法add,
    20. students.add(new Student( "20180302","叶孤城",23,"护理一班"));
    21. students.add(new Student("20180303","东方不败",23,"护理二班"));
    22. students.add(new Student("20180304","西门吹雪",26,"护理三班"));
    23. students.add(new Student("20180305","梅超风",27,"护理四班"));
    24. // 3.遍历这些学生的信息展示:
    25. System.out.println("学号:\t名称\t年龄\t班级");
    26. for (int i = 0; i < students.size(); i++) {
    27. Student s = students.get(i);
    28. System.out.println(s.getStudyNumber() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getClassName());
    29. }
    30. // 4.自定义方法,按照学号搜索功能
    31. Scanner sc = new Scanner(System.in);
    32. // 定义一个死循环,让用户一直输入(即可一直查询)
    33. while (true){
    34. System.out.println("请输入你要查询的学生对象的学号:");
    35. String studyNumber = sc.next();
    36. // 调用方法查询 // 查询到后返回的是对象地址
    37. Student s = getStudentById(students, studyNumber);
    38. // 判断s中是否存在学生对象地址
    39. if (s == null){
    40. System.out.println("查无此人");
    41. }else {
    42. System.out.println("查询成功,你的信息如下:");
    43. System.out.println(s.getStudyNumber() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getClassName());
    44. }
    45. }
    46. }
    47. /**
    48. * 根据学生的学号查询学生对象的集合
    49. * students 存储全部学生的集合
    50. * studyNumber 搜索学生的学号 // 这两个都作为新参
    51. */
    52. // 这里的返回值类型是对象(Student类的对象) 所以返回值类型写Student
    53. public static Student getStudentById(ArrayList<Student> students,String studyNumber){
    54. // 1. 遍历全部学生
    55. for (int i = 0; i < students.size(); i++) {
    56. Student s = students.get(i);
    57. // 查询当前遍历的这个学生对象的学号是否是我们要找的学号
    58. if (s.getStudyNumber().equals(studyNumber)){
    59. return s; // 如果当前学生的学号,和我们查找的学号一样,就返回对象
    60. }
    61. }
    62. // 当整个循环结束后都没有查到,就查无此人
    63. return null;
    64. }
    65. }
    66. // 这是一个新定义的学生类 (自己定义一个类可以方便直接调用方法给成员赋值后,返回成员)
    67. // 每次定义新的类,封装方法,给类赋予对象,就是面向对象编程,(常用)
    68. package com.itheima.arraylist;
    69. public class Student {
    70. private String studyNumber;
    71. private String name;
    72. private int age;
    73. private String className;
    74. public Student() {
    75. }
    76. public Student(String studyNumber, String name, int age, String className) {
    77. this.studyNumber = studyNumber;
    78. this.name = name;
    79. this.age = age;
    80. this.className = className;
    81. }
    82. public String getStudyNumber() {
    83. return studyNumber;
    84. }
    85. public void setStudyNumber(String studyNumber) {
    86. this.studyNumber = studyNumber;
    87. }
    88. public String getName() {
    89. return name;
    90. }
    91. public void setName(String name) {
    92. this.name = name;
    93. }
    94. public int getAge() {
    95. return age;
    96. }
    97. public void setAge(int age) {
    98. this.age = age;
    99. }
    100. public String getClassName() {
    101. return className;
    102. }
    103. public void setClassName(String className) {
    104. this.className = className;
    105. }
    106. }