データ操作の領域では、リストのような複雑なデータ構造を扱うと、予期せぬ課題が発生する可能性があります。整数のリストを考えてみましょう:
List<Integer> list = new ArrayList<>(); list.add(5); list.add(6); list.add(7); list.add(1);
list.remove(1) を実行すると、その結果に驚かれるかもしれません。驚くべきことに、インデックス 1 (つまり 6) の要素が削除されます。 list.remove(new Integer(1)) はどうでしょうか?これにより、最初に出現した 1.
が削除されます。これらの微妙な違いにより、複雑なバグが発生する可能性があります。では、整数のリストを扱う場合、2 つの削除メソッド、remove(int Index) と Remove(Object o) をどのように区別すればよいでしょうか?
重要なのは、Java のメソッド解決プロセスを理解することにあります。自動ボクシングと暗黙的なアップキャストは、メソッドが完全に一致しない場合にのみ発生します。 List インターフェイスは、remove(int Index) と Remove(Object o) の両方を定義するため、Java は変換を行わずに引数に最適なメソッドを選択します。
この場合、list.remove(1) が呼び出されます。単一の整数引数に完全に一致するものがあるためです。ただし、 list.remove(new Integer(1)) は、引数が Integer オブジェクトであるため、remove(Object o) メソッドを呼び出します。
したがって、インデックスに基づいて要素を削除するには、remove(int index) を使用します。 )。参照によって要素を削除するには、remove(Object o) を使用します。この理解により、リスト操作を正確に制御し、意図しない動作を防止し、潜在的なバグを防ぐことができます。
以上がJava リストから整数を削除する際の落とし穴を回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。