[英]How do I iterate over a class object that is declared as an ArrayList in another class?
所以我有 2 個班級: ClassRoom
和Student
。
在 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.