Карты принадлежат к Collection Framework? - PullRequest
4 голосов
/ 15 февраля 2012

Карты в Java не наследуются от интерфейса «Коллекция», хотя в большинстве онлайн-«Учебников» карты объясняются в той же категории, что и наборы, списки и очереди.

Тем не менее, карты принадлежат к Collection Framework?

Ответы [ 5 ]

3 голосов
/ 15 февраля 2012

Лучшее описание коллекции в начале Учебник по Java-коллекции .

Коллекция - иногда ее называют контейнером - это просто объект, который группирует несколько элементов в одну единицу. Коллекции используются для хранения, извлечения, обработки и передачи сводных данных. Как правило, они представляют собой элементы данных, которые образуют естественную группу, такие как покерная комбинация (набор карт), почтовая папка (набор букв) или телефонный справочник (сопоставление имен с телефонными номерами).

Кроме того, в учебном пособии перечислены основные интерфейсы коллекции, которые все они следуют парадигме, изложенной выше:

В следующем списке описаны основные интерфейсы коллекции:

Коллекция - корень иерархии коллекции. Коллекция представляет собой группу объектов, известных как ее элементы. Интерфейс Collection является наименее распространенным знаменателем, который реализуют все коллекции и используется для передачи коллекций и манипулирования ими, когда требуется максимальная универсальность. Некоторые типы коллекций допускают дублирование элементов, а другие - нет. Некоторые заказаны, а другие не заказаны. Платформа Java не предоставляет никаких прямых реализаций этого интерфейса, но предоставляет реализации более специфических подинтерфейсов, таких как Set и List. Также см. Раздел «Интерфейс коллекции».

Set - коллекция, которая не может содержать повторяющиеся элементы. Этот интерфейс моделирует математическую абстракцию набора и используется для представления наборов, таких как карты, содержащие покерную комбинацию, курсы, составляющие расписание ученика, или процессы, выполняющиеся на машине. См. Также раздел «Настройка интерфейса».

Список - упорядоченная коллекция (иногда называемая последовательностью). Списки могут содержать повторяющиеся элементы. Пользователь List обычно имеет точный контроль над тем, где в списке каждый элемент вставлен, и может получить доступ к элементам по их целочисленному индексу (позиции). Если вы использовали Vector, вы знакомы с общим видом List. Также см. Раздел «Интерфейс списка».

Очередь - коллекция, используемая для хранения нескольких элементов перед обработкой. Помимо базовых операций сбора, очередь обеспечивает дополнительные операции вставки, извлечения и проверки.

Очереди обычно, но не обязательно, упорядочивают элементы в порядке FIFO (первым пришел, первым вышел). Среди исключений есть очереди с приоритетами, которые упорядочивают элементы в соответствии с предоставленным компаратором или естественным упорядочением элементов. Какой бы порядок не использовался, заголовок очереди - это элемент, который будет удален вызовом delete или poll. В очереди FIFO все новые элементы вставляются в конец очереди. Другие виды очередей могут использовать другие правила размещения. Каждая реализация Queue должна указывать свои свойства упорядочения. Также см. Раздел «Интерфейс очереди».

Карта - объект, который сопоставляет ключи со значениями. Карта не может содержать дубликаты ключей; каждый ключ может соответствовать максимум одному значению. Если вы использовали Hashtable, вы уже знакомы с основами Map. Также см. Раздел «Интерфейс карты».

Итак, Map - это Коллекция , хотя на самом деле не нужно реализовывать интерфейс Collection.

2 голосов
/ 15 февраля 2012

Интерфейс Map не является расширением интерфейса Collection. Вместо этого интерфейс запускается из собственной иерархии интерфейса для поддержки ассоциаций ключ-значение.

1 голос
/ 15 февраля 2012

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

Для коллекций, подобных карте, они сильно отличаются от коллекций, не похожих на карту.Например, для карт необходимо иметь put (ключ, значение) и get (ключ) (или аналогичные, если вы работаете с объектами asscociation), в то время как для не-картоподобных необходимо иметь iterator () и add ().

1 голос
/ 15 февраля 2012

Ознакомьтесь с официальным руководством , особенно уроком : Интерфейсы :

[...] Базовые интерфейсы коллекции являются основой JavaСборник рамок.Как видно на следующем рисунке, интерфейсы базовой коллекции образуют иерархию.

collections hierarchy

и далее:

Следующий списокописывает основные интерфейсы коллекции:

  • Collection [...]

  • Set [...]

  • List [...]

  • Queue [...]

  • Map [...]

0 голосов
/ 18 октября 2012

Причина в том, что Коллекции работают с набором значений, где Карта работает в форме пар ключ-значение.

...