Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java Collections Framework: полное руководство по эффективным структурам данных

До Java 2 использовались разрозненные классы (Dictionary, Vector, Stack, Properties). Collections Framework унифицировал их: высокая производительность, интероперабельность, лёгкое расширение.

Архитектура фреймворка

Также включает интерфейсы и классы Map (ключ/значение), интегрированные с коллекциями.

Интерфейсы коллекций

ИнтерфейсОписание
CollectionКорень иерархии, работа с группами объектов
ListУпорядоченная коллекция, допускает дубликаты
SetКоллекция без дубликатов
SortedSetSet с упорядоченными элементами
MapОтображение уникальных ключей в значения
Map.EntryЭлемент map (пара ключ/значение), inner class
SortedMapMap с ключами в порядке возрастания
EnumerationLegacy интерфейс перебора, заменён Iterator

Классы коллекций (реализации)

КлассОписание
AbstractCollectionБазовая реализация Collection
AbstractListБазовая реализация List
AbstractSequentialListДля последовательного доступа
LinkedListДвусвязный список (extends AbstractSequentialList)
ArrayListДинамический массив (extends AbstractList)
AbstractSetБазовая реализация Set
HashSetSet на хеш-таблице (extends AbstractSet)
LinkedHashSetHashSet + порядок вставки
TreeSetSet в дереве (красно-чёрное), отсортирован
AbstractMapБазовая реализация Map
HashMapMap на хеш-таблице
TreeMapMap в дереве, ключи отсортированы
WeakHashMapХеш-таблица со слабыми ключами
LinkedHashMapHashMap + порядок вставки
IdentityHashMapСравнение по ссылке (==), не equals()

Скелетные классы (Abstract*) минимизируют усилия при создании своих коллекций.

Legacy классы (java.util)

КлассОписание
VectorДинамический массив, синхронизирован
StackLIFO стек, наследник Vector
DictionaryАбстрактный ключ/значение, аналог Map
HashtableСинхронизированная реализация Dictionary
PropertiesHashtable для строковых ключей/значений
BitSetМассив бит, динамический размер

Алгоритмы коллекций

Статические методы класса Collections: сортировка (sort), поиск (binarySearch), перемешивание (shuffle), минимум/максимум, заполнение, копирование и др. Могут бросать ClassCastException или UnsupportedOperationException.

Константы: EMPTY_SET, EMPTY_LIST, EMPTY_MAP — неизменяемые пустые коллекции.

Итераторы (Iterator / ListIterator)

Iterator — однопроходный обход с возможностью удаления. ListIterator — двунаправленный для List, позволяет модифицировать элементы.

Компараторы (Comparator)

Интерфейс для определения порядка сортировки в TreeSet, TreeMap. Позволяет сортировать одну коллекцию разными способами и сортировать классы, которые нельзя менять.

Итог

Collections Framework даёт готовые структуры данных и алгоритмы. Интерфейсы в java.util декларируют операции, классы — реализуют. Используйте интерфейсы для типов переменных для гибкости.

java

  1. Освоение операторов Java: типы, синтаксис и практические примеры
  2. Комментарии в Java: типы, использование и лучшие практики
  3. Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
  4. Освоение строк в Java: создание, методы и лучшие практики
  5. Интерфейсы в Java: концепции, реализация и лучшие практики
  6. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  7. Try-with-resources в Java: автоматическое управление ресурсами
  8. Аннотации в Java: типы, размещение и практические примеры
  9. Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
  10. Коллекции в C#: практическое руководство с реальными примерами