Найти пересечение двух коллекций

Чтобы найти пересечение двух коллекций, достаточно каждую из них поместить в Set, а затем к первому множеству добавить второе. Тогда в первый Set будут добавлены только те элементы второго, которых нет в первом. ... Читать дальше »

Получить уникальные элементы коллекции

Чтобы в коллекции оставить только неповторяющиеся элементы, достаточно эту коллекцию передать в конструктор объекта типа Set или в его метод addAll(Collection<? extends E> clctn). Тогда все повторяющиеся элементы будут исключены. ... Читать дальше »

TreeSet

Класс TreeSet представляет структуру данных в виде красно-чёрного дерева, в котором все объекты хранятся в отсортированном виде по возрастанию. TreeSet является наследником класса AbstractSet и реализует интерфейс NavigableSet, а следовательно, и интерфейс SortedSet.

Итеративные операции занимают время O(n).

TreeSet не синхронизирован. Если несколько потоков обращаются к TreeSet одновременно, и хотя бы один из потоков изменяет TreeSet, он должен быть синхронизирован извне. Collections.synchronizedSortedSet(new TreeSet()).

LinkedHashSet

LinkedHashSet расширяет HashSet. Скорость работы примерно равна скорости HashSet.

LinkedHashSet — отличается от HashSet только тем, что в основе лежит LinkedHashMap вместо HashSet. Благодаря этому отличию порядок элементов при обходе коллекции является идентичным порядку добавления элементов.
Структура LinkedHashSet

HashSet

В множествах Set каждый элемент хранится только в одном экземпляре, а разные реализации Set используют разный порядок хранения элементов.

Работа с HashSet основана на HashMap, т.к. HashSet хранит все элементы в свойстве HashMap map.
Структура HashSet
... Читать дальше »

TreeMap

TreeMap основан на красно-чёрном дереве, вследствие чего TreeMap сортирует элементы по ключу в естественном порядке или на основе заданного компаратора (по возрастанию). TreeMap гарантирует скорость доступа log(n) для операций containsKey, get, put и remove.

Кроме методов интерфейса Map класс TreeMap реализует методы интерфейса NavigableMap. Например, мы можем получить все объекты до или после определённого ключа с помощью методов headMap и tailMap. Также мы можем получить первый и последний элементы, наибольший или наименьший элемент и т.д. ... Читать дальше »

LinkedHashMap

LinkedHashMap расширяет класс HashMap. Порядок элементов соответствует последовательности добавления.

Каждый элемент узла помимо свойства next содержит свойства before и after, ссылающиеся на предыдущий элемент и на следующий.
Структура LinkedHashMap
... Читать дальше »

HashTable

HashTable похож на HashMap, но он синхронизирован, поэтому работает медленнее, чем HashMap.

HashTable не допускает null ни для ключей, ни для значений.
« 1 2 3 »