Collection
Collection - основные методы работы с простыми наборами элементов
size(), isEmpty(), add(E e)
Map - базовые методы для работы с данными вида «ключ — значение»
From JDK 1.2, Java 1.5 + дженерики,
Java 8 + лямбды
Интерфейс Map
Hashtable – can’t contain null,
Almost all methods is synchronized
HashMap – null, synchronized,
не является упорядоченной: порядок хранения элементов зависит от хэш-функции.
LinkedHashMap - порядок итерирования равен порядку добавления элементов благодаря двунаправленным связям между элементами (аналогично LinkedList)
из-за этого занимает больше память
TreeMap — реализация Map основанная на красно-чёрных деревьях, является упорядоченной, can use Comparator for order(default use "natural ordering"). 2 интерфейса: NavigableMap (поиск по дереву), SortedMap - упорядоченная по ключам коллекция
WeakHashMap - хэш-таблица с weak references
Интерфейс List
Vector — динамический массив объектов, null, synchronized
Stack - LIFO (last-in-first-out),
synchronized (excluding push)
ArrayList - null, based on array
LinkedList - null, двунаправленный связный список можно использовать как стек или очередь
Интерфейс Set - в математике «множество»
неупорядоченная коллекция, которая не может содержать дублирующиеся данные.
HashSet - база - HashMap, Хранит без порядка.(ключ - добавляемый элемент, значение - пустышка Object())
LinkedHashSet - то же что и HashSet, но база - LinkedHashMap и потому хранит порядок добавления.
TreeSet - красно-чёрные деревья и Comparator или "natural ordering"
Интерфейс Queue (FIFO (first-in-first-out))
PriorityQueue - единственная прямая реализация Queue (Java 1.5) null, Comparator или "natural ordering"
ArrayDeque - FIFO, LIFO (last-in-first-out)(Java 1.6), null, faster then Stack as LIFO, and faster than LinkedList as FIFO