Возвращение порядкового номера Arraylist в Java - PullRequest
0 голосов
/ 05 января 2011

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

Спасибо

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


}

Ответы [ 4 ]

4 голосов
/ 05 января 2011

Используйте обычный цикл, а не цикл 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;
}
2 голосов
/ 05 января 2011

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

0 голосов
/ 05 января 2011
//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;
 }
0 голосов
/ 05 января 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).

...