返回Java中Arraylist的索引号

时间:2011-01-05 14:50:53

标签: java indexing arraylist

我希望我的方法public void showClassRoomDetails(String teacherName)使用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;
        }
    } 
}


}

4 个答案:

答案 0 :(得分:4)

使用常规循环,而不是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;
}

答案 1 :(得分:2)

使用常规for循环(for (int i=0;i<classrooms.size();i++))或使用ArrayList.indexOf(classroom)

答案 2 :(得分:0)

这样的东西?

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语句中)。

答案 3 :(得分:0)

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