Java ArrayList of Map - Все объекты карты являются дублирующими - PullRequest
0 голосов
/ 25 марта 2011

У меня есть объект карты, значения которого постоянно меняются при каждом обновлении карты.Их ключи всегда одинаковы, но значения меняются.Каждый раз, когда я меняю объект Map, я добавляю его в ArrayList.Я вижу, что значения на карте различаются каждый раз, когда новая карта добавляется в ArrayList, но когда ArrayList завершает обновление и готов к чтению, все карты в нем одинаковы.

Кто-нибудь может подумать, почему это может быть?

Это в основном все, что происходит ... UpdateLog вызывается с новой картой примерно 20 раз, и каждый объект dataMap1 отличается.Он добавляется в ArrayList.Когда я отлаживаю, я вижу, что значения dataMap1 каждый раз разные.Но когда он закончится, каждый объект dataMap1 в mapLog будет таким же !!

public void UpdateLog(final Map<String,String> dataMap1)

{

mapLog.add(dataMap1);    

}

1 Ответ

5 голосов
/ 25 марта 2011

Вы утверждаете каждый объект dataMap1 отличается ... но не забывайте, что значение dataMap1 является просто ссылкой, а не объектом. Если вы делаете это:

Map<String, String> map = new HashMap<String, String>();

map.put("a", "b");
UpdateLog(map);

map.clear();
map.put("x", "y");
UpdateLog(map);

тогда это не на самом деле с использованием двух разных объектов. Удостоверьтесь, что вы действительно каждый раз получаете новый объект:

// Replaces the call to map.clear()
map = new HashMap<String, String>();
map.put("x", "y");
UpdateLog(map);

Если это не поможет, пожалуйста, оставьте больше кода. Однако, учитывая ваше описание, это то, что происходит. Вы, возможно, захотите скопировать вашу карту вместо того, чтобы каждый раз создавать новую карту, конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...