0

生徒の名前に基づいて ArrayList からオブジェクトを削除したいのですが、各オブジェクトには 5 つの要素があります。質問: テキスト ファイルからオブジェクトを削除するにはどうすればよいですか。

ArrayList<Student> studentList= new ArrayList<Student>();
Iterator iter = studentList.iterator();

public DVD remove(String removeName) {
    while (iter.hasNext()) {
        for (Student stu : studentList) {
            if (stu .GetName().toUpperCase().contains(removeName.toUpperCase())) {
                System.out.println("Found And Removed");
                iter.remove();
                return stu ;
            }

            System.out.println("Not Found");
        }
    }
    return null;

}

各生徒はテキスト ファイルから読み込まれます。1 行に 1 つの要素があります。

元:

  John Smith
  Undergrad
  21 years old
  2010
  2014
  Pocahantas
  Professor
  369 years old
  1599
  1603
  Etc... // new person
  etc....
4

3 に答える 3

0

イテレータを間違った方法で使用しています。外部反復子で反復する場合、次のforステートメントは必要ありません。

while (iter.hasNext()) {
    Student stu = iter.next();
    if (stu .GetName().toUpperCase().contains(removeName.toUpperCase())) {
        System.out.println("Found And Removed");
        iter.remove();
        return stu ;
    }
    System.out.println("Not Found");
    }
}

以前に学生 (または学生の位置) を知っている場合はremove、インターフェイスからメソッドを呼び出すだけで済みListますが、コレクションを繰り返し処理している間にメソッドを削除したい場合は、ほとんどの Java コレクションで外部イテレータを使用します。

于 2013-04-06T20:37:35.317 に答える