classDiagram
Iterable <|-- Collection
Collection <|-- List
Collection <|-- Set
Collection <|-- Queue
Set <|-- SortedSet
SortedSet <|-- NavigableSet
Queue <|-- Deque
Map <|-- SortedMap
SortedMap <|-- NavigableMap
Корневой интерфейс, позволяющий коллекции быть целью for-each цикла.
Основной метод: iterator()
Базовый интерфейс для большинства коллекций. Основные методы:
- add(E e), remove(Object o)
- size(), isEmpty()
- contains(Object o)
- toArray()
Отдельная иерархия для пар ключ-значение. Не наследует от Collection.
Основные методы:
- put(K key, V value), get(Object key)
- keySet(), values(), entrySet()
Характеристики:
- Сохраняет порядок добавления
- Допускает дубликаты
- Доступ по индексу
Реализации:
ArrayList // Динамический массив
LinkedList // Связный список
Vector // Устаревшая синхронизированная версия
Stack // LIFO-структура
Характеристики:
- Не допускает дубликаты
- Порядок зависит от реализации
Реализации:
HashSet // Хэш-таблица
LinkedHashSet // Сохраняет порядок добавления
TreeSet // Сортировка по natural ordering
Характеристики:
- FIFO/LIFO-структуры
- Поддерживают операции вставки/извлечения
Реализации:
PriorityQueue // Очередь с приоритетом
ArrayDeque // Двусторонняя очередь
Реализации:
HashMap // Хэш-таблица
LinkedHashMap // Сохраняет порядок добавления
TreeMap // Сортировка по ключам
Hashtable // Устаревшая синхронизированная версия
Добавляют сортировку элементов по natural ordering или Comparator
Добавляют методы для навигации:
- lower(), floor(), ceiling(), higher()
- headSet(), tailSet()
// Для хранения тестовых данных
List<TestData> testCases = new ArrayList<>();
testCases.add(new TestData("user1", "pass1"));
// Для проверки уникальности
Set<String> uniqueIds = new HashSet<>();
assertTrue(uniqueIds.add(element.getId()));
// Для работы с очередью задач
Queue<TestTask> taskQueue = new LinkedList<>();
taskQueue.poll().execute();
Основные ветви иерархии:
Применение в QA:
Понимание иерархии Collections критично для: