[英]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.