Куча разных вопросов 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)
Назовите преимущества использования коллекций
Не нужно указывать конкретный размер массивов.
(Используются рекурсивные типы данных)
Различные стандартные функции которые облегчают работу с данными.
Почему нет метода iterator.add() чтобы добавить элементы в коллекцию
Единственная задача итератора это перебор коллекции. Каждая коллекция имеет методadd()которым вы можете воспользоваться. Нет смысла добавлять этот метод в итератор, потому что коллекции могут быть упорядоченными и неупорядоченными, и методadd()при этом должен быть устроен по разному.
Почему Map не наследуется от Collection
Они не совместимы, т.к. созданы для различных структур данных. Map использует пару ключ-значение.
Чем отличается ArrayList от Vector
Vector устарел. Не рекоммендуется использовать вообще. Он потокобезопасный и от этого медленнее.
Что будет, если в Map положить два значения с одинаковым ключом
Последнее значение перезапишет предыдущее.
Что вы знаете о коллекциях типа List
List — это упорядоченный список. Объекты хранятся в порядке их добавления в список. Доступ к элементам списка осуществляется по индексу.
Что вы знаете о коллекциях типа Map, в чем их принципиальное отличие
Map хранит связку ключ - значение.
В отличие от предыдущих классов не наследуется от Collection.
У одного ключа - одно значение.
Однако много ключей могут быть от одного значения.
Что вы знаете о коллекциях типа Queue
Хранит элементы в порядке нужном для их обработки.
Обычно работает в порядке FIFO (first in first out)
Что вы знаете о коллекциях типа Set
Set — множествонеповторяющихсяобъектов.В коллекции этого типа разрешено наличие только одной ссылки типаnull.