[英]Returning the index number of an Arraylist in Java
I would like my method public void showClassRoomDetails(String teacherName)
to return the Arraylist index number using the teacherName. 我希望我的方法
public void showClassRoomDetails(String teacherName)
返回使用TeacherName的Arraylist索引号。
Thanks 谢谢
import java.util.ArrayList;
public class School
{
private ArrayList<Classroom> classrooms;
private String classRoomName;
private String teacherName;
public School()
{
classrooms = new ArrayList<Classroom>();
}
public void addClassRoom(Classroom newClassRoom, String theClassRoomName)
{
classrooms.add(newClassRoom);
classRoomName = theClassRoomName;
}
public void addTeacherToClassRoom(int classroomId, String TeacherName)
{
if (classroomId < classrooms.size() ) {
classrooms.get(classroomId).setTeacherName(TeacherName);
}
}
public void showClassRoomDetails(String teacherName)
{
for (Classroom classroom : this.classrooms)
{
if (classroom.returnTeacherName().equals(teacherName))
{
System.out.println(classroom.returnClassRoomName());
System.out.println(classroom.returnTeacherName());
break;
}
}
}
}
Use a regular loop, not the foreach loop: 使用常规循环,而不是foreach循环:
public int showClassRoomDetails(String teacherName)
{
for (int i = 0; i < this.classrooms.size(); i++)
{
Classroom classroom = classrooms.get(i);
if (classroom.returnTeacherName().equals(teacherName))
{
return i;
}
}
// Return -1 when the teacher was not found
return -1;
}
使用常规的for循环( for (int i=0;i<classrooms.size();i++)
)或使用ArrayList.indexOf(classroom)
。
Something like this? 像这样吗
for (int i = 0; i < classrooms.size(); i++) {
Classroom classroom = classrooms.get(i);
if (classroom.returnTeacherName().equals(teacherName)) {
System.out.println("Index: " + i);
}
}
Much more elegantly, 更优雅的是
public int showClassRoomDetails(String teacherName) {
for (int i = 0; i < classrooms.size(); i++) {
Classroom classroom = classrooms.get(i);
if (classroom.returnTeacherName().equals(teacherName)) {
return i;
}
}
return -1;
}
Alternatively, keep a counter that gets incremented for each not true
condition (on your if
statement). 或者,保留一个计数器,该计数器针对每个
not true
条件(在您的if
语句上)递增。
//Return set containing multiple matched indexes
public Set<Integer> showClassRoomDetails(String teacherName){
Set<Integer> result = new HashSet<Integer>();
int i=0;
for (Classroom classroom : this.classrooms){
if (classroom.returnTeacherName().equals(teacherName))
result.add(i);
i++;
}
return result;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.