• ベストアンサー

ArrayListのデバッグ方法について

ArrayListで、 remove(2),Remove(3)した後に、 addすると(2)の位置へデータが 格納されるのでしょうか? ArrayList全体が現在どういう状態か、 簡単に確認する方法あったら知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

ArrayListは、removeを使うと、 オブジェクトが一つだけ取り除かれ、 だるま落としのように全体の長さが縮みます。 addは、インデックスを指定しなければ、リストの最後にオブジェクトが格納されます。 内部のオブジェクト格納の形式が異なるだけで、 ArrayListとLinkedListはほぼ同じような動作をします。 実際の動作がわからなくて困るときは、 「必殺ソースコード参照」があります。 JDKに含まれているsrc.zipというのがJDK自体のソースコードでして、 解凍して見ることができます。 ArrayList.java中のremoveやaddを見てみるとよくわかると思います。 それから、ArrayList全体を調べる必要があった場合、 toArrayメソッドで一度配列にしてやる方法があります。

matchori
質問者

お礼

src.zipいいですね。 いろいろと教えていただきありがとうございます。

その他の回答 (1)

回答No.2

ArrayListのremoveメソッドには int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved); elementData[--size] = null; // Let gc do its work と書かれています。 3行目のSystem.arraycopyによってデータを詰めておれ,4行目で配列の最後にnullが入っていることから,質問の例であったremove(2)をしたら3番目の要素が移動してきます。 というわけで,質問の答えはfalseです(笑)

matchori
質問者

お礼

おっしゃる通りの結果で、 ようやく理解できました。ありがとうございます。

関連するQ&A