Клас IdentityHashMap втілює AbstractMap. Схожий на HashMap, але при порівнянні елементів використовує рівність посилання.
Цей клас не є втіленням Map загального призначення. Хоча цей клас реалізує інтерфейс Map, у ньому свідомо порушено домовленості щодо Map, які передбачають використання методу equals при порівнянні об'єктів.
Цей клас призначено для використання лише в окремих випадках, коли потрібна семантика посилальної рівності. Цей клас забезпечує сталу ефективність операцій get і put. Цей клас має один параметр, який впливає на продуктивність, але не на семантику: очікуваний максимальний розмір. Цей параметр є максимальною кількістю пар ключ-значення, які передбачано зберігти.
package work;
import java.util.*;
public class Work
{ public static void main(String args[])
{ IdentityHashMap i = new IdentityHashMap();
i.put(0, 0);
i.put("d", 1);
i.put("c", 2);
i.put("b", 3);
i.put("a", 4);
System.out.println(i.size()+"\n"+i+"\n"+
i.keySet()+"\n"+i.values());
if (i.containsKey("c")) {System.out.println("Є ключ \"с\"");}
else {System.out.println("Ключа \"с\" немає");}
if (i.containsKey("x")) {System.out.println("Є ключ \"x\"");}
else {System.out.println("Ключа \"x\" немає");}
if (i.containsValue(4)) {System.out.println("Є значення 4");}
else {System.out.println("Значення 4 немає");}
if (i.containsValue(5)) {System.out.println("Є значення 5");}
else {System.out.println("Значення 5 немає");}
System.out.println("Вилучено пару з ключем c і значенням "+i.remove("c"));
Set s = i.entrySet();
Iterator it = s.iterator();
while(it.hasNext())
{ Map.Entry m = (Map.Entry) it.next();
System.out.print(m.getKey()+":"+m.getValue()+" ");
}
}
}
з таким виведенням.
5
{b=3, a=4, d=1, c=2, 0=0}
[b, a, d, c, 0]
[3, 4, 1, 2, 0]
Є ключ "с"
Ключа "x" немає
Є значення 4
Значення 5 немає
Вилучено пару з ключем c і значенням 2
b:3 a:4 d:1 0:0