Я пытаюсь добавить ArrayList в HashMap, и позже я ссылаюсь на ArrayList на другой объект.Копирование ArrayList в Hashmap и сброс Arraylist
Но когда я изменить содержимое ArrayList, он отражается в значении HashMap слишком
Пример:
HashMap<Interger, ArrayList<String>> map = new HashMap<Integer, ArrayList<String>>();
List<String> list1 = new ArrayList<String>();
list1.add("cat");
map.put(1, list1);
list1 = new ArrayList<String>();
list1.add("dog");
map.put(2, list1);
Теперь карта только вход «собака» в нем, это делает есть запись «cat».
Я не хочу создавать ArrayList с новым именем, таким как list2, чтобы удерживать запись «собака».
Я использую это в цикле, так что мне нужно иметь только одну переменную ArrayList, как ... ... и песни1 Я хочу, чтобы поместить данные в HashMap, и продолжать ....
list1 = new ArrayList(); и сохраните в нем новые значения и поместите их в HasnMap.
Как правильно поместить значения в HashMap, используя только одну переменную ArrayList?
Используйте 'clone()' или добавьте вызов 'new ArrayList <> (list1)' при его добавлении. Как есть, вы добавляете ту же * ссылку *. –
нет. в вашем примере карта содержит '{1: [" cat "], 2: [" dog "]}' Я подозреваю, что ваш фактический код содержит 'list1.clear()' или что-то эквивалентное – njzk2
У меня такой же код. Но это не работает. – CM1