Вопрос:
У меня есть 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)); } } Лучший ответ:
Предполагая, что у вас есть что-то в этом роде:
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
В зависимости от того, какие значения вы хотите добавить из своего HashMap. Это записи, ключи или значения? Вы можете перебирать любые записи, ключи или значения на карте и добавлять те, которые вы хотите в свой список.
В приведенном ниже примере entrySet() записи с карты, используя 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() соответственно, с правильными типами.
Ответ №2
Если у вас есть ArrayList<String>, выполните следующие действия:
List<String> l = map.get(«your_key»); l.add(«Some Other Value»);
Это довольно простой способ использовать этот фрагмент кода со списком, отличным от экземпляров String. Просто используйте правильный общий.
Ответ №3
Вы могли бы найти, что ваша жизнь значительно упростилась с Multimap типа Multimap Guava – в частности, ArrayListMultimap – который заботится обо всей этой глупости для вас.