Клас 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