В чем разница между коллекцией и списком в Java? - PullRequest
137 голосов
/ 23 июля 2010

В чем разница между Collection и List в Java? Когда я должен использовать какой?

Ответы [ 7 ]

236 голосов
/ 23 июля 2010

Сначала: a List, это Collection.Это специализированный Collection, однако.

A Collection - это просто набор предметов.Вы можете добавлять вещи, удалять вещи, перебирать вещи и запрашивать, сколько там вещей.

A List добавляет в него информацию об определенной последовательности вещей: Вы можете получить элемент в позиции n , вы можете добавить элемент в позиции n , вы можете удалить элемент в позиции n .

В Collection вы можетене делайте этого: «5-й элемент в этой коллекции» не определен, потому что нет определенного порядка.

Есть и другие специализированные коллекции, например, Set который добавляет возможность, что он никогда не будет содержать один и тот же элемент дважды.

163 голосов
/ 23 июля 2010

Collection является корневым интерфейсом к иерархии java Collections.List - это один подчиненный интерфейс, который определяет упорядоченную коллекцию, другие подчиненные интерфейсы - Queue, которые обычно хранят элементы, готовые к обработке (например, stack ).

Следующая диаграмма демонстрирует взаимосвязь между различными типами коллекций Java:

java collections

7 голосов
/ 23 июля 2010

Java API - лучший ответ на этот вопрос

Коллекция

Корневой интерфейс в коллекции иерархия. Коллекция представляет собой группа объектов, известная как элементы. Некоторые коллекции позволяют дублирующихся элементов и других нет. Некоторые заказаны, а другие не заказаны. JDK не предоставляет никаких прямых реализации этого интерфейса: это обеспечивает реализацию более конкретные подынтерфейсы, такие как Set и Список. Этот интерфейс обычно используется передавать коллекции и манипулировать ими, где максимум общность желательна.

Список (расширяет коллекцию)

Упорядоченная коллекция (также известная как последовательность). Пользователь этого интерфейса имеет точный контроль над тем, где в список каждого элемента вставлен. пользователь может получить доступ к элементам по их целочисленный индекс (позиция в списке), и поиск элементов в списке.

В отличие от наборов, списки обычно позволяют дубликаты элементов. Более формально, списки обычно допускают пары элементы е1 и е2 такие, что e1.equals (e2), и они обычно разрешить несколько пустых элементов, если они разрешить нулевые элементы вообще. Это не немыслимо, что кто-то может пожелать реализовать список, который запрещает дубликаты, бросая время выполнения исключения, когда пользователь пытается вставить их, но мы ожидаем, что это использование быть редким.

3 голосов
/ 12 октября 2016

List и Set - это два подкласса Collection.

В List данные располагаются в определенном порядке.

В Set он не может содержать одни и те же данные дважды.

В коллекции он просто хранит данные без определенного порядка и может содержать повторяющиеся данные.

2 голосов
/ 14 декабря 2013

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

2 голосов
/ 23 июля 2010

Коллекция - это супер интерфейс List, поэтому каждый список Java также является экземпляром коллекции. Коллекции могут повторяться только последовательно (и в произвольном порядке), тогда как List обеспечивает доступ к элементу в определенной позиции с помощью метода get(int index).

2 голосов
/ 23 июля 2010

Коллекция - это высокоуровневый интерфейс, описывающий объекты Java, которые могут содержать коллекции других объектов.Не очень конкретно о том, как к ним осуществляется доступ, могут ли несколько копий одного и того же объекта существовать в одной коллекции или важен ли порядок. Список - это, в частности, упорядоченная коллекция объектов.Если вы помещаете объекты в список в определенном порядке, они останутся в этом порядке.

И решение о том, где использовать эти два интерфейса, гораздо менее важно, чем решение о том, какую конкретную реализацию вы используете.Это повлияет на время и пространство вашей программы.Например, если вам нужен список, вы можете использовать ArrayList или LinkedList, каждый из которых будет иметь значение для приложения.Для других типов коллекций (например, Наборы) применяются аналогичные соображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...