Куча разных вопросов Flashcards
В каких случаях разумно использовать массив, а не ArrayList
Массивы могу быть эффективнее и требовать меньше памяти. Но почти всегда надо использовать ArrayList
В чем отличия и сходства List и Set
Различия:
В Set элементы не могут повторяться и нельзя обратиться к элементу по индексу.
Общее:
Оба унаследованы от Collection, то есть имеют одинаковый набор и сигнатуры методов.
В чем разница между Iterator и Enumeration
Enumerationв два раза быстрееIteratorи использует меньше памяти.Iteratorпотокобезопасен, т.к. не позволяет другим потокам модифицировать коллекцию при переборе.Enumerationможно использовать только для read-only коллекций. Так же у него отсутствует методremove();
Enumeration:hasMoreElement(),nextElement()
Iterator:hasNext(),next(),remove()
В чем разница между Iterator и ListIterator
Есть три различия:
- Iteratorможет использоваться для перебора элементовSet,ListиMap. В отличие от него,ListIteratorможет быть использован только для перебора элементов коллекцииList
- Iteratorпозволяет перебирать элементы только в одном направлении, при помощи методаnext(). Тогда какListIteratorпозволяет перебирать список в обоих направлениях, при помощи методовnext()иprevious()
- При помощиListIteratorвы можете модифицировать список, добавляя/удаляя элементы с помощью методовadd()иremove(). Iterator не поддерживает данную функциональность.
Дайте определение понятию “итератор”
Итератор — объект, позволяющий перебирать элементы коллекции
Дайте определение понятию “коллекция”
Это класс который хранит набор элементов
Как задается порядок следования объектов в коллекции, как отсортировать коллекцию MAP
Используй TreeMap
Порядок задается либо естественным следованием элементов, либо объектом, реализующим интерфейс сравненияComparator.
Для этого надо использовать конструктор:
TreeМар(Comparator с).
Надо переопределить 2 метода:
- int compare(Object obj1, object obj2)— возвращает отрицательное число, еслиobj1в каком-то смысле меньшеobj2; нуль, если они считаются равными; положительное число, еслиobj1большеobj2
- boolean equals(Object obj)— сравнивает данный объект с объектомobj, возвращаяtrue, если объекты совпадают в каком-либо смысле, заданном этим методом
Как использовать Map с вещественными числами
Вещественные числа в качестве ключей почти всегда очень плохи. Для них нужно использоватьTreeMap, предварительно поставив ему компаратор, который сравнивает вещественные числа так, как это нужно в данной задаче. Например, для обычных геометрических задач два вещественных числа могут считаться равными, если отличаются не более, чем на 1e-9.
Как получить коллекцию только для чтения
- Collections.unmodifiableList(list);
- Collections.unmodifiableSet(set);
- Collections.unmodifiableMap(map);
Как получить не модифицируемую коллекцию
public static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s) { return new UnmodifiableSortedSet<>(s); }
Unmodifiable
и так же с остальными классами
не понимаю что это вообще
Как получить синхронизированную коллекцию из не синхронизированной
- Collections.synchronizedList(list);
- Collections.synchronizedSet(set);
- Collections.synchronizedMap(map)
Все они принимают коллекцию в качестве параметра, и возвращают потокобезопасную коллекцию с теми же элементами внутри.
Как реализован цикл foreach
Реализован на основеIterator.
Какие данные могут хранить коллекции
Любые ссылочные типы данных.
Какие коллекции синхронизированы
Для этого используется пакетConcurrent. А так@Deprecated HashTable,Vector.
Какие реализации SortedSet вы знаете и в чем их особенность
TreeSet
хранит свои элементы в виде упорядоченного по значениям дерева.
инкапсулирует в себе TreeMap, который в свою очередь использует сбалансированное бинарное красно-черное дерево для хранения элементов.
для операций add, remove и contains потребуется гарантированное время log(n)