ArrayList的get()方法查找类变量?

时间:2020-01-13 09:21:36

标签: java arraylist

所以我有一个类类型的列表。例如,我有一个ClassRoom类和一个Student类。

我创建了一个学生的ArrayList:ArrayList<Student> studList = new ArrayList<>();

我有一个添加学生的方法,因此索引0被占用:

    public void addStudent(int studID, String studName, int studPhoneNum){
        Student stud = new Student(studName, studID, studPhoneNum);
        studList.add(stud);
        System.out.println(studList);
    }

现在,我要搜索的是学生变量中的特定值。因此,例如,学生由姓名,ID和电话号码表示。如何遍历该学生列表以查找具有特定电话号码的学生,然后打印他或他的电话号码?

这是功能:

    public void sendMessage(int phone){
        for (Student s : studList) {
            studList.get(studPhoneNum);
            \\ then print the Student the phone number belongs to..
        }
    }

我在Student类中确实设置了studPhoneNum变量。

3 个答案:

答案 0 :(得分:1)

最简单的方法是创建一个函数来获取如下电话号码:

public int getPhoneNumber(int stuID){
    for (Student s: studList) {
        if(s.id == stuID){
            return s.phoneNumber;
        }
    }
    return 0;
}

我在这里假设stuList是一个全局变量,因为您可以在addStudent中访问它,而无需将其作为参数传递,否则必须将其传递给函数。 希望对您有所帮助。

答案 1 :(得分:1)

由于要遍历studList,因此's'代表该列表中的每个学生。

public void sendMessage(int phone){
    for (Student s : studList) {
        if (s.getStudPhoneNum() == phone){
             System.out.print(s.getStudName());
        }
    }
}

在这里,您需要创建getter方法(getStudPhoneNumber(),getStudName())来引用Student类的属性。

答案 2 :(得分:1)

您可以执行以下操作:

  1. 使用Java 8流:

    studList.stream()
            .filter(student -> student.getStudPhoneNum==studPhone)
            .findFirst()
            .ifPresent(student -> {
                // Do something
            });
    
  2. 使用循环:

    for(Student s: studList){
        if(s.getStudPhoneNum==studPhone){
            //do something
        }
    }