У меня есть Class1
с частным атрибутом TreeMap<Long, List<Class2>> tree;
и другими, я хочу написать конструктор Class1(Class1 copyOfClass1)
. Должен ли я автоматически создавать значения List
TreeMap
(например, в цикле) или использовать this.tree=new TreeMap(copyOfClass1.tree)
?Конструктор TreeMap значений List
ответ
Если вы используете this.tree=new TreeMap(copyOfClass1.tree)
это будет эквивалентно, как
this.tree=new TreeMap();
this.tree.putAll(copyOfClass1.tree)
Однако, это не будет делать копию списка, которые хранятся в карте. Клавиши будут указывать на одни и те же списки.
Если вы этого не хотите, я предлагаю перебирать записи и делать копии списков.
this.tree = new TreeMap<Long, List<Class2>>();
for (Entry<Long, List<Class2>> entry : copyOfClass1.tree.entrySet()) {
this.tree.put(entry.getKey(), new ArrayList<Class2>(entry.getValue()));
}
И если вместо List я использую другой класс, который я создал, мне нужно сделать то же самое? Я имею в виду, что только примитивные типы копируются по значению? – aLogic
Да, вам нужно сделать то же самое. О «copy by value»: «Java всегда передается по значению. Трудным может быть понимание того, что Java передает объекты в качестве ссылок, переданных по значению». http://stackoverflow.com/questions/40480/is-java-pass-by-reference –
- 1. Treemap and List View
- 2. Сортировка значений в TreeMap
- 3. Treemap with <Integer, List>
- 4. Получение конкретных значений в TreeMap
- 5. Добавление значений, хранящихся в TreeMap
- 6. List-инициализатор и VARIADIC конструктор
- 7. TreeMap <Key, List <String>> to List view
- 8. TreeMap construtor
- 9. Treemap Constructor
- 10. Преобразование ключей и значений Treemap в массив
- 11. Как отсортировать treemap на основе его значений?
- 12. Добавить значения объекта в виде значений TreeMap
- 13. Передача значений через конструктор
- 14. Установка значения treemap в treemap?
- 15. JAVA альтернатива объявлению TreeMap
- 16. Как получить набор значений TreeMap и отсортировать его
- 17. Конструктор значений строки спящего режима
- 18. Преобразовать LinkedHashMap к TreeMap
- 19. Когда использовать Scala TreeMap?
- 20. Java: Treemap - запретить null?
- 21. TreeMap to ArrayList Java
- 22. заказ заказ в TreeMap
- 23. Заполнение TreeMap throws NullPointerException
- 24. TreeMap и LinkedHashMap классов
- 25. Java TreeMap в TreeMap - ошибка идентификатора?
- 26. копирование java treemap treemap с помощью putAll()
- 27. treemap для увеличения ID
- 28. Значения TreeMap получают переопределенные
- 29. Android TreeMap NullPointerException
- 30. TreeMap удалить не работает
Вы хотите получить глубокую копию или мелкую копию? –
Мне нужна глубокая копия. – aLogic