Добавить записи в ArrayList в HashMap - PullRequest
1 голос
/ 12 марта 2012

У меня есть ArrayList с некоторыми записями в качестве значения в HashMap, как добавить в него новые значения?

Спасибо. Это так:

Map<String, ArrayList<String>> index = new HashMap<String, ArrayList<String>>();
void add(String kword, String... urls){
    if(index.containsKey(kword)){
        index.get(kword).addAll(Arrays.asList(urls));
    } else {
        index.put(kword, (ArrayList<String>) Arrays.asList(urls));
    }
}

Ответы [ 4 ]

4 голосов
/ 12 марта 2012

Предполагая, что у вас есть что-то вроде этого:

Map<K, ArrayList<V>> map = new HashMap<K, ArrayList<V>>();

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

map.get(listKey).add(newValue);

Естественно, вы также можете сохранить результат map.get(listKey) во временной переменной, чтобы избежать затрат на map.get() при вставке нескольких значений:

List<V> list = map.get(listKey);

for (V value : newValues)
    list.add(value);
1 голос
/ 12 марта 2012

Зависит от того, какие именно значения вы хотите добавить из HashMap . Это записи, ключи или значения? Вы можете перебирать записи, ключи или значения на карте и добавлять те, которые вы хотите, в свой список.

Пример ниже получает записи с карты, используя метод entrySet() в HashMap. Предполагается, что у вас есть метод, чтобы проверить, является ли запись той, которую вы ищете (isThisTheEntryIAmLookingFor(...)).

Map<String, String> map;
//...

ArrayList<Map.Entry<String, String>> list = 
        new ArrayList<Entry<String, String>>();

for (Map.Entry<String, String> e : map.entrySet()) {

    if (isThisTheEntryIAmLookingFor(e)) {

        list.add(e);

    }

}

Если вы просто хотите собрать ключи или значения, используйте keySet() или values() соответственно с правильными типами.

0 голосов
/ 13 марта 2012

Вы можете сделать вашу жизнь значительно проще с Гуавой Multimap типом - в частности ArrayListMultimap - которая позаботится обо всей этой чепухе для тебя.

0 голосов
/ 12 марта 2012

Если у вас есть ArrayList<String>, сделайте это так:

List<String> l = map.get("your_key");
l.add("Some Other Value");

Довольно просто использовать этот фрагмент кода со списком, отличным от String экземпляров.Просто используйте правильный родовой.

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