Java for Beginner
675 subscribers
549 photos
156 videos
12 files
842 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
IdentityHashMap, отличия от других Map

IdentityHashMap — это специальная реализация интерфейса Map в Java, которая использует оператор == для сравнения ключей и значений вместо метода equals(), который используется в большинстве других реализаций Map. Это означает, что в IdentityHashMap ключи считаются одинаковыми, если они ссылаются на один и тот же объект в памяти, а не если они логически равны.

Отличия от других реализаций Map

Сравнение ключей и значений:

HashMap, TreeMap и другие реализации Map используют метод equals() для сравнения ключей и значений.
IdentityHashMap использует оператор ==, что означает сравнение по ссылке, а не по содержимому.

Производительность:

IdentityHashMap может быть быстрее для некоторых операций, так как оператор == работает быстрее, чем метод equals().
В то же время,
IdentityHashMap не гарантирует порядок элементов и не предназначен для использования в случаях, когда важно логическое равенство объектов.

Применение:

IdentityHashMap используется в специализированных случаях, таких как кеширование объектов с уникальными ссылками, когда требуется учитывать именно ссылки, а не содержимое объектов.
Другие реализации, такие как HashMap, подходят для большинства стандартных задач, где важно логическое равенство объектов.


Пример использования
import java.util.IdentityHashMap;
import java.util.Map;

public class IdentityHashMapExample {
public static void main(String[] args) {
Map<String, String> identityMap = new IdentityHashMap<>();

String key1 = new String("key");
String key2 = new String("key");

identityMap.put(key1, "Value 1");
identityMap.put(key2, "Value 2");

System.out.println("Size of IdentityHashMap: " + identityMap.size()); // Output: 2
System.out.println("Value for key1: " + identityMap.get(key1)); // Output: Value 1
System.out.println("Value for key2: " + identityMap.get(key2)); // Output: Value 2

// Compare with HashMap
Map<String, String> hashMap = new HashMap<>();
hashMap.put(key1, "Value 1");
hashMap.put(key2, "Value 2");

System.out.println("Size of HashMap: " + hashMap.size()); // Output: 1
}
}


В этом примере видно, что IdentityHashMap хранит два разных элемента для двух разных объектов key1 и key2, даже если их содержимое идентично. В то время как HashMap считает эти объекты одинаковыми из-за использования метода equals() и перезаписывает значение.

Полезные ссылки для более полного ознакомления с IdentityHashMap (спасибо авторам за их кропотливую работу):
https://www.baeldung.com/java-identityhashmap

#Java #Training #Medium #IdentityHashMap
Основные методы IdentityHashMap и примеры использования

IdentityHashMap предоставляет основные методы интерфейса Map, такие как добавление, удаление и получение элементов.

Основные методы

put(K key, V value): Добавляет пару ключ-значение в карту.
get(Object key): Возвращает значение, связанное с указанным ключом.
remove(Object key): Удаляет элемент по указанному ключу.
size(): Возвращает количество элементов в карте.
containsKey(Object key): Проверяет, содержит ли карта указанный ключ.
containsValue(Object value): Проверяет, содержит ли карта указанное значение.
keySet(): Возвращает набор всех ключей в карте.
values(): Возвращает коллекцию всех значений в карте.
entrySet(): Возвращает набор всех пар ключ-значение в карте.


Примеры использования
import java.util.IdentityHashMap;
import java.util.Map;

public class IdentityHashMapMethodsExample {
public static void main(String[] args) {
Map<String, String> identityMap = new IdentityHashMap<>();

String key1 = new String("key");
String key2 = new String("key");

// Метод put
identityMap.put(key1, "Value 1");
identityMap.put(key2, "Value 2");

// Метод get
System.out.println("Value for key1: " + identityMap.get(key1)); // Output: Value 1
System.out.println("Value for key2: " + identityMap.get(key2)); // Output: Value 2

// Метод size
System.out.println("Size of IdentityHashMap: " + identityMap.size()); // Output: 2

// Метод containsKey
System.out.println("Contains key1: " + identityMap.containsKey(key1)); // Output: true
System.out.println("Contains new key: " + identityMap.containsKey(new String("key"))); // Output: false

// Метод containsValue
System.out.println("Contains Value 1: " + identityMap.containsValue("Value 1")); // Output: true

// Метод remove
identityMap.remove(key1);
System.out.println("Size after removing key1: " + identityMap.size()); // Output: 1

// Методы keySet, values, entrySet
System.out.println("Keys: " + identityMap.keySet()); // Output: [key2]
System.out.println("Values: " + identityMap.values()); // Output: [Value 2]
System.out.println("Entries: " + identityMap.entrySet()); // Output: [key2=Value 2]
}
}


В этом примере демонстрируются основные методы IdentityHashMap, такие как добавление, получение и удаление элементов, а также проверка наличия ключей и значений. Эти методы работают аналогично другим реализациям Map, за исключением того, что IdentityHashMap использует сравнение по ссылке.


#Java #Training #Medium #IdentityHashMap