Класс IdentityHashMap является реализацией абстрактного класса AbstractMap. Его отличие от HashMap состоит в том, что при сравнении элементов используется сравнение ссылок, а не значений.
При сравнении не используется класс equals(). Этот класс обеспечивает постоянное время операции добавления и получения элемента и формирует хэш-код с помощью метода Systen.identityHashCode(Object).
С конструкторами и методами этого класса вы можете ознакомиться в официальной документации.
Для понимания того, как это работает на практике, рассмотрим пример простого приложения.
Пример:
Класс IdentityHashMapDemo
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.Set;
public class IdentityHashMapDemo {
public static void main(String[] args) {
IdentityHashMap<integer, string=""> identityHashMap = new IdentityHashMap<>();
System.out.println("Adding elements into IdentityHashMap...");
identityHashMap.put(3, "Proselyte");
identityHashMap.put(2, "AsyaSmile");
identityHashMap.put(5, "Konstantin");
identityHashMap.put(1, "Ivan");
identityHashMap.put(4, "Peter");
System.out.println("Initial identityHashMap content:");
Set set = identityHashMap.entrySet();
for (Object element : set) {
Map.Entry mapEntry = (Map.Entry) element;
System.out.println("ID: " + mapEntry.getKey() + ", Name: " + mapEntry.getValue());
}
System.out.println("\n================================\n");
System.out.println("Modifying Proselyte...");
String name = identityHashMap.get(3);
name += " Changed";
identityHashMap.put(3, name);
System.out.println("\n================================\n");
System.out.println("Initial identityHashMap content:");
set = identityHashMap.entrySet();
for (Object element : set) {
Map.Entry mapEntry = (Map.Entry) element;
System.out.println("ID: " + mapEntry.getKey() + ", Name: " + mapEntry.getValue());
}
System.out.println("\n================================\n");
}
}
</integer,>
В результате работы программы мы получим следующий результат:
/*Some System Messages*/
Adding elements into IdentityHashMap...
Initial identityHashMap content:
ID: 5, Name: Konstantin
ID: 1, Name: Ivan
ID: 2, Name: AsyaSmile
ID: 4, Name: Peter
ID: 3, Name: Proselyte
================================
Modifying Proselyte...
================================
Initial identityHashMap content:
ID: 5, Name: Konstantin
ID: 1, Name: Ivan
ID: 2, Name: AsyaSmile
ID: 4, Name: Peter
ID: 3, Name: Proselyte Changed
================================
В этом разделе мы изучили основы класса IdentityHashMap и рассмотрели пример простого приложения с его использованием.