JavaでListを削除する際の注意点

高洛峰
リリース: 2017-01-22 16:15:57
オリジナル
1174 人が閲覧しました

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 サイトをご覧ください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート