2012-02-21 8 views
1

は、いくつかの入力を必要なオブジェクト:ArrayListのは

は私がN ArrayListあり、それぞれに私がfoo()オブジェクトを追加してい言うことができます。

Foo foo = new Foo() 

A.add(foo); 

B.add(foo); 

N.add(foo); 

今すぐいずれかfoo()オブジェクト上で行わ変更は、他のすべてのArrayListに反映されますか?

  1. 「はい」の場合は?

  2. この動作は、Vectorなどの他のコレクションを使用しても達成できるかどうか。

  3. 私がfooをnullにするのは、すべてのarraylistに反映されますか?

答えて

8
  1. はい、すべてのリストはあなたが唯一のヌルへの参照を設定することができますので、
  2. はい、すべてのコレクションは、その
  3. ないように動作し、同じオブジェクトへの参照、および各リストが含まれているため参照のコピーがあります。
+0

3で「いいえ」を詳しく説明できますか? – aviad

+0

@aviad:A BとNそれぞれには参照fooのコピーが含まれており、すべてが同じオブジェクトを参照しています。 fooをnullに設定しても、コピーには影響しません。 –

+0

私はオブジェクト自体が無効になる(foo = null)と思って、すべてのコレクションがnullを参照しています。私は何かが恋しいですか? – aviad

0

ヒープメモリ内のそのようなオブジェクトへArrayListVector保留基準として​​の任意の実装あなたがget(index)方法でListの指標になるだろうときに、あなたがそうオブジェクトへの参照をachive:

  1. はい。get(index)メソッドでリストのインデックスを取得し、達成されたオブジェクトの統計を変更すると、変更はメモリに残ります。
  2. はい、すべて​​にこの現象があります。
  3. いいえ、リストのインデックスを達成すると、「オブジェクトへの参照のコピーを取得しました」があり、nullに設定するとリストインスタンスは変更されません。