Карта карт - ценность для внутренней карты

1

У меня есть карта карт

Map<String, Map<String,Integer>> outerMap = new HashMap<String, Map<String, Integer>>();

и я хочу поместить некоторые значения во внутреннюю карту. Это правильный путь? Или это можно сделать лучше?

class SampleMap {
    Map<String, Map<String, Integer>> outerMap = new HashMap<String, Map<String, Integer>>();

    public void add(String outerKey, String innerKey, Integer value) {
        Map<String, Integer> tempMap = new HashMap<String, Integer>();
        if (outerMap.size() > 0)
            tempMap = outerMap.get(outerKey);
        tempMap.put(innerKey, value);
        outerMap.put(key, tempMap);
    }
}
Теги:
dictionary
hashmap

2 ответа

3
Лучший ответ

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

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

public void add(String outerKey, String innerKey, Integer value) {
    Map<String, Integer> tempMap
    if (outerMap.containsKey(outerKey)) {
        tempMap = outerMap.get(outerKey);
    } else {
        tempMap = new HashMap<String, Integer>();
        outerMap.put(outerKey, tempMap);
    }
    tempMap.put(innerKey, value);
}
1

Технически нет ничего плохого в вашем коде (кроме незначительного улучшения, предложенного dasblinkenlight), но является ли карта карт тем, что вам действительно нужно?

Если вы хотите читать/записывать значения двумя ключами, возможно, лучше создать карту из пары двух ключей (можно использовать реализацию MultiKey или Pair) или другую структуру данных (подробности см. В этом комментарии qaru.site/questions/571495/...)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню