У меня ConcurrentMap<Integer, MyObj>
в моей программе. Могу ли я изменить MyObj
, если я знаю ключ? Без удаления и размещения нового MyObj
?Можно ли изменить элемент на карте без удаления?
ответ
Не только это, но если вы сохраняете исходную ссылку на объект, вы можете изменить его.
MyObject o = new MyObject();
myMap.put("key", o);
o.setName("foo");
myMap.get("key").getName(); //will return "foo"
myMap.get("key").setName("bar");
myMap.get("key").getName(); //will return "bar"
o = null; //this applies only for your local reference, not for the map
myMap.get("key").getName(); //will STILL return "bar"
Это зависит от вашего определения «изменить». Если вы хотите изменить что-то внутреннее на MyObj
, и этот объект изменен, вы, безусловно, можете это сделать.
ConcurrentMap<Integer, MyObj> map = /* snip */;
map.get(someKey).callMutatorMethod();
Если вы хотите, чтобы заменить объект с совершенно новым экземпляром, вы можете просто позвонить Map#put()
, которая заменит существующую отображенное значение, если такое значение существует.
Если у вас есть ссылка на 'MyObj', ничто не мешает вам изменять его состояние. 'ConcurrentMap' только обеспечивает модификации самой карты (помещает, удаляет и т. Д.), Не гасит с изменениями в других потоках. – oconnor0
Да, вы можете. Карта просто содержит ссылку на объект. Объект может измениться без обновления карты.
Map<Integer, MyObj> myMap = new ConcurrentMap<Integer, MyObj>();
myMap.put(1, new MyObj());
MyObj obj = myMap.get(1);
obj.setFoo("Foo");
- 1. Изменить элемент в карте
- 2. Можно ли fadeOut текст без удаления строки?
- 3. Можно ли изменить отображение информации о движении на карте?
- 4. В Java можно изменить значение на карте
- 5. Можно ли изменить поведение удаления по умолчанию на пользовательский объект?
- 6. Можно ли сделать страны кликабельными на карте?
- 7. Можно ли скрывать элемент без переполнения?
- 8. Можно ли изменить выбор «на лету»?
- 9. Как изменить элемент на карте и получить ее местоположение?
- 10. Можно ли изменить значок exe без перекомпиляции?
- 11. Изменить координату на карте
- 12. Случайный элемент на карте
- 13. Можно ли изменить ширину mmIenu без SASS
- 14. Можно ли изменить цвет улицы в g-карте?
- 15. Можно ли позиционировать или плавать элемент без влияния на переполнение?
- 16. Изменить XmlElement InnerText без удаления дочерних узлов
- 17. Можно ли настроить или изменить сообщение удаления приложения для Android?
- 18. Можно ли изменить андроид приложения без обновления на Google Play
- 19. Можно ли изменить (без знака) на (NSUInteger) или создать проблемы?
- 20. Можно ли использовать элемент шага скольжения Элемент без слайдера?
- 21. Есть ли способ изменить действие удаления на существующий экземпляр shared_ptr
- 22. Можно ли отключить все соединения QObject без его удаления
- 23. Можно ли изменить DOM без использования append() или appendTo()
- 24. Можно ли удалить указатели ошибок без удаления указанных исключений?
- 25. Можно ли изменить каждый элемент кортежа в списке кортежей?
- 26. Изменить цвет на карте D3
- 27. Изменить положение Google на карте
- 28. Можно ли добавлять представление программно без удаления родительского представления?
- 29. элемент выглядит на карте, но не на карте
- 30. Можно ли написать на переносной SD-карте? (Android 6 marshmallow)
Хорошо, я не знал об этом. Благодарю. – marxin