【问题标题】:Returning the index number of an Arraylist in Java在 Java 中返回 Arraylist 的索引号
【发布时间】:2011-01-05 14:50:53
【问题描述】:

我希望我的方法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;
        }
    } 
}


}

【问题讨论】:

  • 您有什么具体问题吗?
  • 你为什么不赞成这个?我猜这个“问题”可能是隐含的,但够清楚了吧?
  • 虽然我们中的许多人都愿意帮助解决家庭作业问题,但您应该展示您为尝试解决问题所做的工作,并寻求具体的帮助。我们不是来这里一次只写一种方法的作业。
  • @RD 你说得对,我错过了那些......

标签: java indexing arraylist


【解决方案1】:

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

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

    【讨论】:

      【解决方案3】:

      这样的?

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

      【讨论】:

        【解决方案4】:
        //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;
         }
        

        【讨论】:

          猜你喜欢
          • 2011-03-08
          • 1970-01-01
          • 1970-01-01
          • 2012-05-05
          • 2012-05-27
          • 1970-01-01
          • 1970-01-01
          • 2021-04-26
          • 1970-01-01
          相关资源
          最近更新 更多