プロが教える店舗&オフィスのセキュリティ対策術

ArrayListで、
remove(2),Remove(3)した後に、
addすると(2)の位置へデータが
格納されるのでしょうか?

ArrayList全体が現在どういう状態か、
簡単に確認する方法あったら知りたいです。

A 回答 (2件)

ArrayListは、removeを使うと、


オブジェクトが一つだけ取り除かれ、
だるま落としのように全体の長さが縮みます。
addは、インデックスを指定しなければ、リストの最後にオブジェクトが格納されます。

内部のオブジェクト格納の形式が異なるだけで、
ArrayListとLinkedListはほぼ同じような動作をします。

実際の動作がわからなくて困るときは、
「必殺ソースコード参照」があります。
JDKに含まれているsrc.zipというのがJDK自体のソースコードでして、
解凍して見ることができます。
ArrayList.java中のremoveやaddを見てみるとよくわかると思います。

それから、ArrayList全体を調べる必要があった場合、
toArrayメソッドで一度配列にしてやる方法があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/04/02 17:40

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です(笑)
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/04/02 17:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!