Java で LIST を削除する場合、通常は list.remove(o) が使用されますが、これにより問題が発生することがよくあります。まず次のコードを見てみましょう。
返される結果は次のとおりです。これは明らかに期待したものではありません。リスト内のインデックス 2 を持つ要素をすべて削除したいのですが、出力結果には 2 が表示されます。これは、i が 1 の場合、リスト内のインデックス 1 を持つ要素 2 が削除されたためです。 . 、このときのリストは[1,2,3]ですが、iをインクリメントすると2になります。list.get(i)すると取り出した結果は3になります。リスト要素 削除すると、それに応じてインデックスが変更されます。 したがって、イテレータの作成後に、元のオブジェクトへの単一のポインタが変更されない反復メソッドを見つける必要があります。リンクされたインデックス テーブルが作成されると、元のオブジェクトの数が変化しても、このインデックス テーブルの内容は同期的に変更されません。つまり、このインデックス テーブルを維持するためにカーソルが使用されるため、次のように削除できます:package com.demo; import java.util.ArrayList; import java.util.List; public class Test11 { public void delete(){ List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(2); list.add(3); for (int i = 0; i < list.size(); i++) { if(list.get(i)==2){ list.remove(i); } } this.outputList(list); } private void outputList(List<Integer> list){ for (Integer i : list) { System.out.println(i); } } public static void main(String[] args) { Test11 t = new Test11(); t.delete(); } }
このコードの結果 そうです! イテレータ内で削除したのに、なぜリストの値が変わってしまったのかと言う人もいるかもしれません。この問題については自分で考えてください。分からないなら転職も可能です! 概要上記がこの記事の全内容です。この記事の内容が皆さんの学習や仕事に少しでも役立つことを願っています。ご質問がある場合は、メッセージを残して連絡してください。 Java でリストを削除する際の注意点に関する関連記事は、PHP 中国語 Web サイトをご覧ください。