java collection Flashcards
коллекция
контейнер с элементами и с функциями манипулирования
преимущества использования коллекций.
безразмерность, функции сортировки, списки, деревья.
Какие данные могут хранить коллекции?
Коллекции могут хранить любые ссылочные типы данных.
Какова иерархия коллекций?
interface collection содержит интерфейсы list,set,queue.
Set содержит реализации в виде HashSet TreeSet LinkedHashSet
List содержит arrayList LinkedList Vector(Stack)
Map содержит TreeMap HashMap LinkedHashMap Hashtable
Что вы знаете о коллекциях типа List?
List — это упорядоченный список. Объекты хранятся в порядке их добавления в список. Доступ к элементам списка осуществляется по индексу.
Что вы знаете о коллекциях типа Set?
Set — множество неповторяющихся объектов. В коллекции этого типа разрешено наличие только одной ссылки типа null.
Что вы знаете о коллекциях типа Queue?
коллекция Очереди , предназначенная для хранения элементов в порядке, нужном для их обработки.
Что вы знаете о коллекциях типа Map, в чем их принципиальное отличие?
Массив ключ-значение - где в роли ключей может выступать обьект
Какие реализации SortedSet вы знаете и в чем их особенность?
уникальность ранимых объектов
в порядке возрастания (Comparator)
Реализации:
java.util.TreeSet — упорядоченное дерево. Инкапсулирует в себе TreeMap
.для операций add, remove и contains потребуется гарантированное время log(n).
Что разного/общего у классов ArrayList и LinkedList, когда лучше использовать ArrayList, а когда LinkedList?
LinkedList требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка, тогда как в ArrayList элементы просто идут по порядку
LinkedList стоит использоваь для скорости вставки и удаления данных в случае конца\начала списка. В остальных же случаях ArrayList по факту выигрывает в производительности изза кеша процесса и расположения элементов впамяти - в линкед листе они разбросаны хаотично
В каких случаях разумно использовать массив, а не ArrayList?
массивы могут быть быстрее и кушать меньше памяти.
Чем отличается ArrayList от Vector?
Vector deprecated. У Vector некоторые методы синхронизированы и поэтому они медленные. В любом случае Vector не рекомендуется использовать вообще.
HashSet и TreeSet?
HashSet хеш-таблица работает быстрее для большинства операций, таких как добавление, удаление.
производительность итерации по контейнеру зависит от емкости и «коэффициента загрузки» (рекомендуется оставлять load factor значением по умолчанию равным 0.75,
TreeSet — бинарное дерево.Скорость для базовых операций Log(n) упорядочивает список
Чем отличаются HashMap и TreeMap? Как они устроены и работают? Что со временем доступа к объектам, какие зависимости?
HashMap хеш-таблица работает быстрее
производительность итерации по контейнеру зависит от емкости и «коэффициента загрузки» (рекомендуется оставлять load factor значением по умолчанию равным 0.75,
TreeMap — бинарное дерево.Скорость для базовых операций Log(n) упорядочивает список
если не нужна упорядоченность, использовать HashMap. Исключение — ситуация с вещественными числами, которые в качестве ключей почти всегда очень плохи. Для них нужно использовать TreeMap, предварительно поставив ему компаратор
Что такое Hashtable, чем она отличается от HashMap?
Некоторые методы HashTable синхронизированы, поэтому она медленнее HashMap.
HashTable не позволяет иметь null ключи или значения. HashMap позволяет иметь один null ключ и сколько угодно null значений.
У HashMap есть подкласс LinkedHashMap, который добавляет возможности по итерации. Если вам нужна эта функциональность, то можно легко переключаться между классами.
Общее замечание — не рекомендуется использовать HashTable даже в многопоточных приложениях. Для этого есть ConcurrentHashMap.
Что будет, если в Map положить два значения с одинаковым ключом?
Последнее значение перезапишет предыдущее.