Возврат номера индекса Arraylist в Java

Я хотел бы, чтобы мой метод public void showClassRoomDetails(String teacherName) возвращал номер индекса Arraylist, используя имя учителя.

Спасибо

    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;
        }
    } 
}


}

person Daniel    schedule 05.01.2011    source источник


Ответы (3)


Используйте обычный цикл, а не цикл 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;
}
person Lukas Eder    schedule 05.01.2011

Либо используйте обычный цикл for (for (int i=0;i<classrooms.size();i++)), либо используйте ArrayList.indexOf(classroom).

person DJClayworth    schedule 05.01.2011

Что-то вроде этого?

for (int i = 0; i < classrooms.size(); i++) {
    Classroom classroom = classrooms.get(i);
    if (classroom.returnTeacherName().equals(teacherName)) {
        System.out.println("Index: " + i);
    }
}

Гораздо изящнее,

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;
}

В качестве альтернативы сохраните счетчик, который увеличивается для каждого условия not true (в вашем операторе if).

person Buhake Sindi    schedule 05.01.2011