Looking for java Answers? Try Ask4KnowledgeBase
Looking for java Keywords? Try Ask4Keywords

Java LanguageКоллекции


Вступление

Структура коллекций в java.util предоставляет ряд общих классов для наборов данных с функциональностью, которые не могут быть предоставлены регулярными массивами.

Структура коллекций содержит интерфейсы для Collection<O> , с основными суб-интерфейсами List<O> и Set<O> , а также картографическая коллекция Map<K,V> . Коллекции являются корневым интерфейсом и реализуются многими другими структурами коллекции.

замечания

Коллекции - это объекты, которые могут хранить коллекции других объектов внутри них. Вы можете указать тип данных, хранящихся в коллекции, с помощью Generics .

В коллекциях обычно используются пространства имен java.util или java.util.concurrent .

Java SE 1.4

Java 1.4.2 и ниже не поддерживают дженерики. Таким образом, вы не можете указать параметры типа, которые содержит коллекция. Помимо того, что у вас нет безопасности типов, вы также должны использовать отбрасывания, чтобы получить правильный тип из коллекции.

В дополнение к Collection<E> существует несколько основных типов коллекций, некоторые из которых имеют подтипы.

  • List<E> - упорядоченный набор объектов. Он похож на массив, но не определяет ограничение по размеру. Реализации будут обычно расти в размерах внутри, чтобы разместить новые элементы.
  • Set<E> - это набор объектов, которые не позволяют дублировать.
    • SortedSet<E> - это Set<E> который также задает порядок элементов.
  • Map<K,V> представляет собой набор пар ключ / значение.
    • SortedMap<K,V> - это Map<K,V> которая также определяет упорядочение элементов.
Java SE 5

Java 5 добавляет в новый тип коллекции:

  • Queue<E> представляет собой набор элементов, предназначенных для обработки в определенном порядке. Реализация определяет, является ли это FIFO или LIFO. Это устаревает класс Stack .
Java SE 6

Java 6 добавляет некоторые новые подтипы коллекций.

  • NavigableSet<E> - это Set<E> со встроенными специальными навигационными методами.
  • NavigableMap<K,V> - это Map<K,V> со встроенными специальными навигационными методами.
  • Deque<E> - это Queue<E> которая может быть прочитана с любого конца.

Обратите внимание, что вышеупомянутые элементы - все интерфейсы. Чтобы использовать их, вы должны найти соответствующие классы реализации, такие как ArrayList , HashSet , HashMap или PriorityQueue .

Каждый тип коллекции имеет несколько реализаций, которые имеют разные показатели производительности и варианты использования.

Обратите внимание, что принцип замены Лискова применяется к подтипам коллекции. То есть, SortedSet<E> может быть передан функции, ожидающей Set<E> . Также полезно прочитать раздел « Ограниченные параметры в разделе« Общие »для получения дополнительной информации о том, как использовать коллекции с наследованием класса.

Если вы хотите создать свои собственные коллекции, может быть проще наследовать один из абстрактных классов (например, AbstractList ) вместо реализации интерфейса.

Java SE 1.2

До 1.2 вам пришлось использовать следующие классы / интерфейсы:

  • Vector вместо ArrayList
  • Dictionary вместо Map . Обратите внимание, что словарь также является абстрактным классом, а не интерфейсом.
  • Hashtable вместо HashMap

Эти классы устарели и не должны использоваться в современном коде.

Коллекции Связанные примеры