简体   繁体   English

返回Java中Arraylist的索引号

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM