1. リストの途中 (または先頭) に要素を追加する

リストの途中に要素を挿入したい場合、リスト内では次のようになります。

11 個の要素のリストがあるとします。

リストの途中 (または先頭) に要素を追加する

リストのインデックス 5 に数値 10,000 を挿入したいとします。これを行うには、次を実行するだけです。

list.add(5, 10000);

変数はどこにlistありますかArrayList。このadd(int index, type value)メソッドは、リストの 5 番目の位置に値 10000 を追加します。このadd()メソッドでは次のことが起こります。

ステップ 1: 5 番目の位置から始まる配列のすべての要素が、配列の末尾に向かって 1 要素ずつシフト (コピー) されます。

リストの途中 (または先頭) に要素を追加する 1

配列の 5 番目と 6 番目のセルの要素が同じになっていることに注意してください。

ステップ 2: 5 番目のセルに値 10,000 を書き込みます。

リストの途中 (または先頭) に要素を追加する 2

これで、リストには配列のすべての要素が含まれ、5 番目のセルには数値 10,000 が含まれます。まさに私たちが望んでいたものです。



2. リストから要素を削除する

リストからの要素の削除は要素の挿入と似ていますが、プロセスが逆になります。

リストから 3 番目の要素を削除してみましょう。これを行うには、以下を実行する必要があります。

list.remove(3);

Remove() メソッドで何が起こるかは次のとおりです。

ステップ 1: 配列の 4 番目の位置から始まる要素が、配列の先頭に向かって 1 要素ずつシフト (コピー) されます。

リストからの要素の削除

ステップ 2: 変数の値がsize1 減ります。

リストからの要素の削除 2

配列の最後に灰色の値がいくつかあることに注意してください。技術的には、これらはゴミです。ガベージ コレクションを妨げないように、これらを削除する必要があります。

ステップ3: ゴミを片づける

リストからの要素の削除 3



3. Java でリストを操作する実際の例

リストを操作する例をいくつか書いてみましょう。

1 から 20 までの範囲のすべての偶数をリストします。

コード ノート
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);
リスト オブジェクトを作成します。

すべてのインデックスをループします120
インデックスが2剰余なしで割り切れる場合は、
リストに追加します。

次に、リストのすべての要素を画面に表示してみましょう。

コード ノート
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   System.out.println(list.get(i));
リスト オブジェクトを作成する
すべてのインデックスをループします120

数値が2剰余なしで割り切れる場合は、
リストに追加します

。0 からリストのサイズまでループします
。各要素を画面に表示します。

要素の削除:

次に、4 で割り切れるすべての要素を削除しましょう。リストから要素を削除すると、残りの要素の位置がすぐに変更されることに注意してください。

コード ノート
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   if (list.get(i)%4 == 0)
   {
      list.remove(i);
      i--;
   }
リスト オブジェクトを作成します。

すべてのインデックスをループします120
インデックスが2剰余なしで割り切れる場合は、
それをリストに追加します

。0 からリストのサイズまでループします
。リストの要素が剰余なしで割り切れる場合は、4次のようにします。

a) 削除要素
b)iループの次の反復で同じインデックスを取得できるようにカウンタを 減らします。

リストから最後の 3 つの要素を削除する必要があるとします。

これを間違って行う方法は次のとおりです。

コード ノート
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

int n = list.size();
list.remove(n - 3);
list.remove(n - 2);
list.remove(n - 1);
リスト オブジェクトの作成

リストには 10 個の要素があります: 246、 ... 20



n = 10
n - 3 = 7(リストには 9 個の要素が残っています)
n - 2 = 8(リストには 8 個の要素が残っています)
n - 1 = 9(リストには 7 個の要素が残っています)

7 番目と 8 番目の要素を削除すると、リストには 8 つの要素だけが残ります。つまり、9 番目の要素を削除することはできず、プログラムでエラーが発生します。

要素を削除する正しい方法は次のとおりです。

オプション1 オプション 2
int n = list.size();
list.remove(n - 3);
list.remove(n - 3);
list.remove(n - 3);
int n = list.size();
list.remove(n - 1);
list.remove(n - 2);
list.remove(n - 3);

要素は削除操作のたびに 1 つずつシフトされるため、要素は最後から削除するか、別の一貫した場所から削除する必要があります。