簡體   English   中英

如何迭代在另一個類中聲明為 ArrayList 的類對象?

[英]How do I iterate over a class object that is declared as an ArrayList in another class?

所以我有 2 個班級: ClassRoomStudent

在 ClassRoom 中,我使用 Student 類型創建了一個 Arraylist:

public class ClassRoom{
    int classID;
    String className;
    ArrayList<Student> studList = new ArrayList<>();

    public ClassRoom(int classID, String className){
        this.classID = classID;
        this.className = className;
    }

    public String toString(){
        return ("Class ID: " + classID + " Class name: " + className + " Students list: " + studList);
    } 

我也有2個功能。 一個將學生添加到列表中,另一個向每個學生的電話號碼發送一條消息。 這是我有點卡住的地方。

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

    public void sendMessage(int studPhoneNum){
        for (Student phone : studList[studPhoneNum]) {
            System.out.println("Sending message to: " + phone);
        }
    }

我試圖了解如何迭代studPhoneNum中的studList值。

當我嘗試執行此處粘貼的操作時出現此錯誤: The type of the expression must be an array type but it resolved to ArrayList<Student>

我很想知道如何解決這個問題。

謝謝

答案很簡單。 ArrayList不是數組。 要訪問ArrayList的項目,請使用[your_array_list].get([your_index])

所以要迭代一個 ArrayList 你可以使用

for(Student student: studList)
{
  System.out.println("Sending message to: " + student);
}

或者

for(int i=0; i < studList.size(); ++i)
{
  System.out.println("Sending message to: " + studList.get(i));
}

考慮使用 Streams 來優化您的編碼:

public void sendMessage(int studPhoneNum){
  Student student = studList.stream().filter(student-> student.studPhoneNum == studPhoneNum).findFirst().get();
  System.out.println("Sending message to: " + student.studName + " at " + student.studPhoneNum);
}

您可以在此處查看實踐中的全部內容: https : //repl.it/@randycasburn/Stream-Filter?language=java10&folderId=

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM