2013-11-20 4 views
-1
ArrayList<SomeObject> listSomeObject; 
HashMap<String, SomeObject> hmSomeObject; 

SomeObject so = new SomeObject(); 
listSomeObject.add(so); 
hmSomeObject.put("key", so); 

hmSomeObject.get("key").setSomeProp(5); 

Будет ли эта операция установки в конце изменить элемент ArrayList; действительно ли на самом деле есть только один объект? Другими словами:Добавление объекта к нескольким спискам/картам

listSomeObject.get(0).getSomeProp() 

Будет ли это возвращать 5?

+5

Запустить его и проверить его? –

+0

Я не хочу запускать его; Я хочу сразу ответить на вопрос, когда я это сделаю. Таким образом, эти ребята приносили жертву, говоря «да», и помещали проиндексированную страницу об этом, маленькая проблема. Ваш сосед может понадобиться в один день – Halo

+0

Я бы ожидал, что мой сосед потратит некоторое время на чтение хорошей книги Java или онлайн-учебника, чтобы понять концепцию, а не смотреть на Google для таких вещей. –

ответ

2

Короткий ответ: да.

Длинный ответ: да!

Действительно длинный ответ: почему вы не попробовали его и не обнаружили, что он действительно возвращается 5?

+0

Я догадался, что это будет да; и я мог бы попробовать, но когда я поступил в Google, я не мог сразу увидеть результат; поэтому я хотел, чтобы это было похоже на запись. – Halo

0

Да. Это потому, что это ссылка на значение, а не на само значение. Если вы поместите ссылку в список, карту или что-то еще, вы по-прежнему будете изменять одно и то же значение.

+4

Ссылка, а не указатель –

+0

На самом деле это не указатель, а ссылка. – brimborium

+0

Приветствия, просто исправил это. –

1

Существует только один объект с именем so, на который ссылаются (ссылки) по карте и списку. Поэтому любые изменения, сделанные на so по любой ссылке, видны повсюду.

Так что да.

Смежные вопросы