Класс IdentityHashMap реализует AbstractMap. Он похож на HashMap, за исключением того, что при сравнении элементов используется ссылочное равенство.
Этот класс не является реализацией Map общего назначения. Хотя этот класс реализует интерфейс Map, он намеренно нарушает общий контракт Map, который предусматривает использование метода equals при сравнении объектов.
Этот класс предназначен для использования только в редких случаях, когда требуется семантика ссылочного равенства. Этот класс обеспечивает постоянную производительность для основных операций (get и put), предполагая, что хэш-функция идентификатора системы (System.identityHashCode (Object)) правильно распределяет элементы среди бакетов. Этот класс имеет один параметр настройки (который влияет на производительность, но не на семантику): ожидаемый максимальный размер. Этот параметр является максимальным количеством отображений ключ-значение, которые предполагается сохранить в Map.
Конструкторы
Ниже приведен список конструкторов, поддерживаемых IdentityHashMap.
№ | Конструктор и описание |
1 | IdentityHashMap() Этот конструктор создает новый, пустой IdentityHashMap с ожидаемым максимальным размером по умолчанию (21). |
2 | IdentityHashMap(int expectedMaxSize) Этот конструктор создает новый пустой IdentityHashMap с указанным ожидаемым максимальным размером. |
3 | IdentityHashMap(Map m) Этот конструктор создает новый IdentityHashMap, содержащую отображения ключ-значение в указанном Map. |
Методы
Помимо методов, унаследованных от родительских классов, IdentityHashMap определяет следующие методы:
№ | Методы и описание |
1 | void clear() Удаляет все отображения из этого Map. |
2 | Object clone() Возвращает мелкую копию этой хэш-карты идентичности: сами ключи и значения не клонируются. |
3 | boolean containsKey(Object key) Проверяет, является ли указанная ссылка объекта ключом в этой хэш-карте идентичности. |
4 | boolean containsValue(Object value) Проверяет, является ли заданная ссылка объекта значением в этой хэш-карте идентичности. |
5 | Set entrySet() Возвращает Set вид отображений, содержащихся в этом Map. |
6 | boolean equals(Object o) Сравнивает указанный объект с этим Map. |
7 | Object get(Object key) Возвращает значение, для которого указанный ключ отображается в этой хэш-карте идентификатора, или null, если карта не содержит отображения для этого ключа. |
8 | int hashCode() Возвращает значение хэш-кода для этой карты. |
9 | boolean isEmpty() Возвращает true, если эта хэш-карта идентичности не содержит отображений ключ-значение. |
10 | Set keySet() Возвращает вид, основанный на идентичности, ключей, содержащихся в этом Map. |
11 | Object put(Object key, Object value) Связывает указанное значение с указанным ключом в этой хэш-карте идентификации. |
12 | void putAll(Map t) Копирует все отображения с указанной карты на эту карту. Эти отображения заменят любые отображения, которые это отображение имело для любого из ключей, находящихся в настоящее время на указанной карте. |
13 | Object remove(Object key) Удаляет отображение этого ключа из этого Map, если оно присутствует. |
14 | int size() Возвращает количество отображений ключ-значение на этом Map. |
15 | Collection values() Возвращает представление (вид) коллекции значений, содержащихся на этом Map. |
Пример
Следующая программа демонстрирует работу нескольких методов, поддерживаемых коллекцией IdentityHashMap в Java:
import java.util.*;
public class IdentityHashMapDemo {
public static void main(String args[]) {
// Создаём хэш-карту
IdentityHashMap ihm = new IdentityHashMap();
// Помещаем элементы в карту
ihm.put("Зарина", new Double(3434.34));
ihm.put("Марк", new Double(123.22));
ihm.put("Андрей", new Double(1378.00));
ihm.put("Денис", new Double(99.22));
ihm.put("Михаил", new Double(-19.08));
// Получаем вид элементов
Set set = ihm.entrySet();
// Получаем итератор
Iterator i = set.iterator();
// Отображаем элементы
while(i.hasNext()) {
Map.Entry me = (Map.Entry)i.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
System.out.println();
// Вносим 1000 на счёт Зарины
double balance = ((Double)ihm.get("Зарина")).doubleValue();
ihm.put("Зарина", new Double(balance + 1000));
System.out.println("Новый баланс Зарины: " + ihm.get("Зарина"));
}
}
Получим следующий результат:
Андрей: 1378.0
Михаил: -19.08
Марк: 123.22
Денис: 99.22
Зарина: 3434.34
Новый баланс Зарины: 4434.34
Оглавление
- 1. Java – Самоучитель для начинающих
- 2. Java – Обзор языка
- 3. Java – Установка и настройка
- 4. Java – Синтаксис
- 5. Java – Классы и объекты
- 6. Java – Конструкторы
- 7. Java – Типы данных и литералы
- 8. Java – Типы переменных
- 9. Java – Модификаторы
- 10. Java – Операторы
- 11. Java – Циклы и операторы цикла
- 11.1. Java – Цикл while
- 11.2. Java – Цикл for
- 11.3. Java – Улучшенный цикл for
- 11.4. Java – Цикл do..while
- 11.5. Java – Оператор break
- 11.6. Java – Оператор continue
- 12. Java – Операторы принятия решений
- 12.1. Java – Оператор if
- 12.2. Java – Оператор if..else
- 12.3. Java – Вложенный оператор if
- 12.4. Java – Оператор switch..case
- 12.5. Java – Условный оператор (? :)
- 13. Java – Числа
- 13.1. Java – Методы byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
- 13.2. Java – Метод compareTo()
- 13.3. Java – Метод equals()
- 13.4. Java – Метод valueOf()
- 13.5. Java – Метод toString()
- 13.6. Java – Метод parseInt()
- 13.7. Java – Метод Math.abs()
- 13.8. Java – Метод Math.ceil()
- 13.9. Java – Метод Math.floor()
- 13.10. Java – Метод Math.rint()
- 13.11. Java – Метод Math.round()
- 13.12. Java – Метод Math.min()
- 13.13. Java – Метод Math.max()
- 13.14. Java – Метод Math.exp()
- 13.15. Java – Метод Math.log()
- 13.16. Java – Метод Math.pow()
- 13.17. Java – Метод Math.sqrt()
- 13.18. Java – Метод Math.sin()
- 13.19. Java – Метод Math.cos()
- 13.20. Java – Метод Math.tan()
- 13.21. Java – Метод Math.asin()
- 13.22. Java – Метод Math.acos()
- 13.23. Java – Метод Math.atan()
- 13.24. Java – Метод Math.atan2()
- 13.25. Java – Метод Math.toDegrees()
- 13.26. Java – Метод Math.toRadians()
- 13.27. Java – Метод Math.random()
- 14. Java – Символы
- 14.1. Java – Метод Character.isLetter()
- 14.2. Java – Метод Character.isDigit()
- 14.3. Java – Метод Character.isWhitespace()
- 14.4. Java – Метод Character.isUpperCase()
- 14.5. Java – Метод Character.isLowerCase()
- 14.6. Java – Метод Character.toUpperCase()
- 14.7. Java – Метод Character.toLowerCase()
- 14.8. Java – Метод Character.toString()
- 15. Java – Строки
- 15.1. Java – Метод charAt()
- 15.2. Java – Метод compareTo()
- 15.3. Java – Метод compareToIgnoreCase()
- 15.4. Java – Метод concat()
- 15.5. Java – Метод contentEquals()
- 15.6. Java – Метод copyValueOf()
- 15.7. Java – Метод endsWith()
- 15.8. Java – Метод equals()
- 15.9. Java – Метод equalsIgnoreCase()
- 15.10. Java – Метод getBytes()
- 15.11. Java – Метод getChars()
- 15.12. Java – Метод hashCode()
- 15.13. Java – Метод indexOf()
- 15.14. Java – Метод intern()
- 15.15. Java – Метод lastIndexOf()
- 15.16. Java – Метод length()
- 15.17. Java – Метод matches()
- 15.18. Java – Метод regionMatches()
- 15.19. Java – Метод replace()
- 15.20. Java – Метод replaceAll()
- 15.21. Java – Метод replaceFirst()
- 15.22. Java – Метод split()
- 15.23. Java – Метод startsWith()
- 15.24. Java – Метод subSequence()
- 15.25. Java – Метод substring()
- 15.26. Java – Метод toCharArray()
- 15.27. Java – Метод toLowerCase()
- 15.28. Java – Метод toString()
- 15.29. Java – Метод toUpperCase()
- 15.30. Java – Метод trim()
- 15.31. Java – Метод valueOf()
- 15.32. Java – Классы StringBuilder и StringBuffer
- 15.32.1. Java – Метод append()
- 15.32.2. Java – Метод reverse()
- 15.32.3. Java – Метод delete()
- 15.32.4. Java – Метод insert()
- 15.32.5. Java – Метод replace()
- 16. Java – Массивы
- 17. Java – Дата и время
- 18. Java – Регулярные выражения
- 19. Java – Методы
- 20. Java – Потоки ввода/вывода, файлы и каталоги
- 20.1. Java – Класс ByteArrayInputStream
- 20.2. Java – Класс DataInputStream
- 20.3. Java – Класс ByteArrayOutputStream
- 20.4. Java – Класс DataOutputStream
- 20.5. Java – Класс File
- 20.6. Java – Класс FileReader
- 20.7. Java – Класс FileWriter
- 21. Java – Исключения
- 21.1. Java – Встроенные исключения
- 22. Java – Вложенные и внутренние классы
- 23. Java – Наследование
- 24. Java – Переопределение
- 25. Java – Полиморфизм
- 26. Java – Абстракция
- 27. Java – Инкапсуляция
- 28. Java – Интерфейсы
- 29. Java – Пакеты
- 30. Java – Структуры данных
- 30.1. Java – Интерфейс Enumeration
- 30.2. Java – Класс BitSet
- 30.3. Java – Класс Vector
- 30.4. Java – Класс Stack
- 30.5. Java – Класс Dictionary
- 30.6. Java – Класс Hashtable
- 30.7. Java – Класс Properties
- 31. Java – Коллекции
- 31.1. Java – Интерфейс Collection
- 31.2. Java – Интерфейс List
- 31.3. Java – Интерфейс Set
- 31.4. Java – Интерфейс SortedSet
- 31.5. Java – Интерфейс Map
- 31.6. Java – Интерфейс Map.Entry
- 31.7. Java – Интерфейс SortedMap
- 31.8. Java – Класс LinkedList
- 31.9. Java – Класс ArrayList
- 31.10. Java – Класс HashSet
- 31.11. Java – Класс LinkedHashSet
- 31.12. Java – Класс TreeSet
- 31.13. Java – Класс HashMap
- 31.14. Java – Класс TreeMap
- 31.15. Java – Класс WeakHashMap
- 31.16. Java – Класс LinkedHashMap
- 31.17. Java – Класс IdentityHashMap
- 31.18. Java – Алгоритмы Collection
- 31.19. Java – Iterator и ListIterator
- 31.20. Java – Comparator
- 32. Java – Дженерики
- 33. Java – Сериализация
- 34. Java – Сеть
- 34.1. Java – Обработка URL
- 35. Java – Отправка Email
- 36. Java – Многопоточность
- 36.1. Java – Синхронизация потоков
- 36.2. Java – Межпоточная связь
- 36.3. Java – Взаимная блокировка потоков
- 36.4. Java – Управление потоками
- 37. Java – Основы работы с апплетами
- 38. Java – Javadoc