Коллекции

Преобразовать массив в список

Метод Arrays.asList(T… a) — возвращает исходный массив в виде ArrayList. Результирующий ArrayList будет фиксированного размера и любая попытка его изменить (добавить/удалить элемент) приведет к UnsupportedOperationException во время выполнения.

Поскольку и исходный массив, и полученный список ссылаются на один и тот же объект, любое изменение в массиве также изменит элементы в ArrayList.

EnumSet

EnumSet – абстрактный класс, предоставляющий фабричные методы для создания объектов типа EnumSet.
EnumSet предназначен для хранения элементов Enum конкретного типа, который указывается при создании объекта. ... Читать дальше »

ArrayDeque

ArrayDeque представляет обобщенную двунаправленную очередь.
Содержит методы для работы:
1. Как с очередью (addFirst(), addLast(), offer(), peekLast(), ...).
2. Как со стеком (push(), pop(), peek()).
3. Как с коллекцией (size(), isEmpty(), iterator(), toArray(), ...).

Операции добавления/удаления/получения из начала и конца очереди выполняются за конечное время О(1), при этом быстрее, чем у LinkedList. Это особенно хорошо видно на больших объёмах хранимых элементов.

Удаление элемента по значению производится итеративно за время О(n). Так что, если требуется удалять элементы, то рекомендуется использовать LinkedList.

ArrayDeque внутри себя хранит элементы в массиве типа Object (Object[] elements). Массив elements работает как циклический массив, в котором положение ячейки не фиксировано, она может быть началом, может быть концом, или где-нибудь в середине. ... Читать дальше »

TreeMap. Null в качестве ключа

Если TreeMap использует естественный порядок сортировки, то при добавлении нового элемента выполняется проверка ключа на null. Если key == null, он выбрасывает NullPointerException.

Если в TreeMap передан компаратор, который не допускает работу с null, то попытка передать null в качестве ключа также приведет к выбросу NullPointerException. ... Читать дальше »

TreeMap. Выброс ClassCastException

TreeMap выполняет сортировку элементов по ключам. Для этого он использует либо натуральную сортировку (интерфейс Comparable), либо переданный в конструктор объект-Comparator.

Если объекты, предназначенные для хранения в TreeMap не реализуют интерфейс Comparable, и в конструктор не был передан компаратор, то код скомпилируется успешно, но попытка добавить элемент приведёт к выбросу ClassCastException на стадии выполнения (runtime exception). ... Читать дальше »

List как ключ для HashMap

В качестве ключа HashMap может принимать объекты, в том числе и List. Причём для List не обязательно указывать тип хранимых объектов, ключами могут быть разные списки, хранящие разные типы объектов. ... Читать дальше »

Создание HashMap на основе существующего Map-объекта

HashMap можно создать на основе другого Map-объекта, передав его в конструктор. Но при этой операции типы ключей и значений нового Map-объекта должны совпадать с типами исходного, либо быть их суперклассами. ... Читать дальше »
1 2 3 »