Java 如何迭代另一个类中声明为ArrayList的类对象?
所以我有两门课:Java 如何迭代另一个类中声明为ArrayList的类对象?,java,class,arraylist,Java,Class,Arraylist,所以我有两门课:教室和学生 在教室中,我使用学生类型创建Arraylist: 公共课堂{ int classID; 字符串类名称; ArrayList studList=新建ArrayList(); 公共教室(int classID,String className){ this.classID=classID; this.className=className; } 公共字符串toString(){ 返回(“班级ID:+classID+”班级名称:“+className+”学生列表:“+stu
教室
和学生
在教室中,我使用学生类型创建Arraylist:
公共课堂{
int classID;
字符串类名称;
ArrayList studList=新建ArrayList();
公共教室(int classID,String className){
this.classID=classID;
this.className=className;
}
公共字符串toString(){
返回(“班级ID:+classID+”班级名称:“+className+”学生列表:“+studList”);
}
我还有两个功能。一个是将一个学生添加到列表中,另一个是向每个学生的电话号码发送消息。这就是我被卡住的地方
public void addStudent(int studID、String studName、int studPhoneNum){
学生stud=新学生(studName、studID、studPhoneNum);
studList.add(螺柱);
系统输出打印项次(studList);
}
公共无效发送消息(int studPhoneNum){
用于(学生电话:studList[studPhoneNum]){
System.out.println(“向:+电话发送消息”);
}
}
我试图理解如何迭代studList
arraylist中的值studPhoneNum
当我尝试执行粘贴到此处的操作时,出现了此错误:表达式的类型必须是数组类型,但它已解析为ArrayList
我很想知道如何解决这个问题
谢谢,答案很简单。
ArrayList
不是数组。
要访问数组列表中的项目
,请使用[您的数组列表].get([您的索引])
因此,要在ArrayList上迭代,可以使用
for(Student student: studList)
{
System.out.println("Sending message to: " + student);
}
或
for(int i=0;i
考虑使用流优化编码:
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);
}
你可以在这里看到整个实践:
studList[studPhoneNum]
如果studList是一个数组(但不是),如果studPhoneNum是该数组中的索引(但不是),那么studPhoneNum将是有效的对列表进行迭代。对于每个元素,测试它是否有作为参数传递的电话号码。如果有,则打印一些内容。我确信您的Java书籍中有关于For循环语法的部分。请再次阅读。脱离主题,但sendMessage
方法不应该将消息作为参数吗?@JoakimDanielson这是为了学习ng,但通常你是对的。谢谢!现在运行它不会产生任何问题,但仍然不会输出我出于某种原因在那里添加的sysout。嗯,@DanielBeilin,studList是空的,不是吗?因此它会迭代0次,因为0public 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);
}