Ответ 1
Методы внедрения там не выходят замуж очень хорошо. LinkedHashMap
добавляет связанный список к объектам записи карты. IdentityHashMap
использует метод зондирования и поэтому избегает наличия каких-либо объектов ввода.
Есть несколько способов добавить характеристики "identity" к коллекции/карте.
- Заставьте тип ключа правильно вести себя с помощью методов
final
equals
иhashCode
. На самом деле все типы ссылочных типов должны иметь это, но неважно. - Если вы не можете изменить
equals
иhashCode
, но можете изменить класс, добавьте полеfinal
, имеющее классfinal
, содержащийfinal
ссылки на тип, который вы собираетесь использовать в качестве ключа. Используйте новое поле в качестве ключа. - Сохраните объекты адаптера в коллекции/карте. Вам понадобится создать новый экземпляр адаптера для каждого поиска. Он просто имеет методы
equals
/hashCode
для вызова==
/System.identityHashCode
исходного объекта.