Коллекция
— это интерфейс в Java API, и согласно документации это...
Корневой интерфейс в иерархии коллекций. Коллекция представляет собой группу объектов, называемых ее элементами. В некоторых коллекциях допускается дублирование элементов, а в других нет. Некоторые упорядочены, а другие неупорядочены. JDK не предоставляет каких-либо прямых реализаций этого интерфейса: он предоставляет реализации более конкретных подинтерфейсов, таких как Set и List. Этот интерфейс обычно используется для передачи коллекций и управления ими там, где требуется максимальная универсальность.
Распространенными примерами коллекций являются: ArrayList
, HashSet
, LinkedList
, Stack
и Vector
.
Я думаю, что на этот вопрос лучше всего ответить не в программировании.
Допустим, у вас есть 5 мячей, и вы хотите легко их перемещать. Вы получаете мешок и кладете в него 5 шаров. Сумка выступает в роли контейнера. Теперь вы можете перемещать этот мешок, и поэтому 5 шаров довольно легко перемещаются вместе с ним.
Проще говоря, вы держите ноль или более объектов внутри другого объекта для легкого поиска.
Это класс, реализующий интерфейс java.util.Collection.
Есть еще одна ветка для тех, кто реализует java.util.Map.
Это основа структур данных в Java: List, Set, LinkedList, HashMap, TreeMap и т. д.
Цитирование Java API «Коллекция, иногда называемая контейнером, — это просто объект, который объединяет несколько элементов в единое целое».
Обычно экземпляр java.util.Collection (хотя java.util.Map официально также является частью структуры коллекций)
Хотя интерфейс Collection может быть реализован напрямую, обычно клиентский код будет использовать реализацию одного из подинтерфейсов: Set, List, Queue / Deque
Вот пример кода (слева вы обычно видите интерфейс, а справа — класс реализации).
Наборы не хранят дубликатов, все их элементы уникальны:
final Set<String> basicSet = new HashSet<String>();
basicSet.add("One");
basicSet.add("Two");
basicSet.add("One");
basicSet.add("Three");
System.out.println(basicSet.toString());
// Output: [Three, One, Two]
// (seemingly random order, no duplicates)
SortedSets являются частным случаем наборов, в которых элементы хранятся в указанном порядке:
final SortedSet<String> sortedSet = new TreeSet<String>();
sortedSet.add("One");
sortedSet.add("Two");
sortedSet.add("One");
sortedSet.add("Three");
System.out.println(sortedSet.toString());
// Output: [One, Three, Two]
// (natural order, no duplicates)
Списки позволяют вам сохранить значение несколько раз и получить доступ или изменить порядок вставки:
final List<String> strings = new ArrayList<String>();
strings.add("Two");
strings.add("Three");
strings.add(0, "One"); // add item to beginning
strings.add(3, "One"); // add item at position 3 (zero-based)
strings.add("Three");
strings.add(strings.size() - 1, "Two"); // add item at last-but-one position
System.out.println(strings);
// Output: [One, Two, Three, One, Two, Three]
Существует также практическое сокращение для определения списка:
List<String> strings = Arrays.asList("One", "Two", "Three");
// this returns a different kind of list but you usually don't need to know that
и т. д.
Чтобы лучше понять, прочитайте The Collections Trail из Sun Java Tutorial (онлайн) или Java Generics and Collections Мориса Нафталина и Филипа Уодлера