Как я могу обновить карту внутри карты? - PullRequest
2 голосов
/ 30 января 2012

У меня есть Map of Maps, который выглядит следующим образом:

Map<String, Map<String, Object>> data;

Я хочу обновить внутреннюю карту.

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

Map<String, Object> innerMap = data.get("outer_key");
innerMap.put("inner_key", value);
data.put("outer_key", innerMap);

Ответы [ 2 ]

3 голосов
/ 30 января 2012

Я думаю, что у вас может быть опечатка, и я предполагаю, что inner на самом деле innerMap. Я, вероятно, изменил бы его немного, чтобы учесть null значения на внешней карте:

Map<String, Object> innerMap = data.get("outer_key");

// Added this if statement to handle null values in the outer map.
if (innerMap == null) {
    innerMap = new HashMap<String, Object>();
    data.put("outer_key", innerMap);
}

innerMap.put("inner_key", value);
// data.put("outer_key", innerMap); <-- This is not needed, innerMap is already a value in
                                     // the outer map.
3 голосов
/ 30 января 2012

Вы можете рассмотреть возможность использования библиотеки гуавы google, которая имеет класс Table (в основном карта карт):

http://guava -libraries.googlecode.com / svn / trunk / javadoc / com/google/common/collect/Table.html

Затем у вас есть доступный метод put, который принимает строку, столбец и значение (что немного проще).

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