Тут разработчики не стали мудрствовать лукаво и просто использовали экземпляр
HashMap внутри HashSet. Каждый элемент HashSet хранится как ключ в этой хэш-таблице, а значение для каждого ключа установлено в фиксированное значение PRESENT, что является специальным объектом (обычно new Object()).При добавлении элемента, у него вычисляется хэш-код, определяется соответствующий бакет, и элемент добавляется в этот бакет, если он еще не присутствует (проверяется с помощью метода
equals()).При удалении вычисляется хэш-код элемента, определяется бакет, и элемент удаляется, если он присутствует в этом бакете.
Упрощённый код класса HashSet:
public class HashSet<E> implements Set<E>, Cloneable, java.io.Serializable {
// Внутренний экземпляр HashMap
private transient HashMap<E, Object> map;
// Специальный константный объект, используемый в качестве значения для всех ключей
private static final Object PRESENT = new Object();
public HashSet() {
map = new HashMap<>();
}
public boolean add(E e) {
return map.put(e, PRESENT) == null;
}
public boolean remove(Object o) {
return map.remove(o) == null;
}
public boolean contains(Object o) {
return map.containsKey(o);
}
// Другие методы...
}
#java #hashset #hashmap
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤1😁1
В Java коллекции Map предоставляют возможность хранить пары "ключ-значение". Два популярных варианта —
HashMap и TreeMap. Давайте разберем их ключевые особенности и когда их лучше использовать.📚 Kраткие определения:
-
HashMap: - Неупорядоченная коллекция.
- Основан на хэш-таблице.
-
TreeMap: - Упорядоченная коллекция.
- Основан на красно-черном дереве.
- Поддерживает сортировку по ключам.
⚖️ Когда использовать:
-
HashMap:- Если важна производительность и порядок хранения не имеет значения.
- Когда нужно быстро получать значения по ключу
-
TreeMap:- Если необходимо хранить элементы в отсортированном порядке.
- Для использования функционала "примитивного" поиска (например,
firstKey() или lastKey()).📌 Подведение итогов:
Выбор между
HashMap и TreeMap зависит от ваших требований к производительности и порядку элементов. Помните, что HashMap лучше подходит для большинства случаев, когда необходим быстрый доступ, а TreeMap — для упорядоченного хранения данных.#java #HashMap #TreeMap
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2
HashMap и ConcurrentHashMap1️⃣ HashMap:
• Не потокобезопасен.
• Быстрее в однопоточном окружении.
• Можно получить
ConcurrentModificationException, если итерация выполняется параллельно с изменением данных.2️⃣ ConcurrentHashMap:
• Потокобезопасен.
• Использует сегментацию для увеличения производительности в многопоточном режиме.
• Не выбрасывает
ConcurrentModificationException.Пример:
Map<String, String> map = new ConcurrentHashMap<>();
map.put("key", "value");
ConcurrentHashMap.#java #hashmap #concurrenthashmap
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤯3❤1
HashMap?HashMap – одна из самых эффективных структур, но её можно ещё ускорить.HashMap увеличивается при заполнении на 75%, что может приводить к перераспределению. Укажите new HashMap<>(1000) для больших данных.computeIfAbsent() – сокращает проверку наличия ключа перед вставкой.synchronized HashMap – вместо этого применяйте ConcurrentHashMap.Map<String, Integer> map = new HashMap<>(1000);
map.computeIfAbsent("key", k -> 42);
HashMap под свои задачи, особенно если храните большие объёмы данных.#java #hashmap #performance
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤1
В Java коллекции Map предоставляют возможность хранить пары "ключ-значение". Два популярных варианта —
HashMap и TreeMap. Давайте разберем их ключевые особенности и когда их лучше использовать.📚 Kраткие определения:
-
HashMap: - Неупорядоченная коллекция.
- Основан на хэш-таблице.
-
TreeMap: - Упорядоченная коллекция.
- Основан на красно-черном дереве.
- Поддерживает сортировку по ключам.
⚖️ Когда использовать:
-
HashMap:- Если важна производительность и порядок хранения не имеет значения.
- Когда нужно быстро получать значения по ключу
-
TreeMap:- Если необходимо хранить элементы в отсортированном порядке.
- Для использования функционала "примитивного" поиска (например,
firstKey() или lastKey()).📌 Подведение итогов:
Выбор между
HashMap и TreeMap зависит от ваших требований к производительности и порядку элементов. Помните, что HashMap лучше подходит для большинства случаев, когда необходим быстрый доступ, а TreeMap — для упорядоченного хранения данных.#java #HashMap #TreeMap
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1