Відповіді:
По-перше: a List
- це a Collection
. Це спеціалізованийCollection
, однак, .
А Collection
це тільки те: колекція предметів. Ви можете додавати речі, видаляти речі, перебирати речі та запитувати, скільки там вмісту.
A List
додає до нього інформацію про певну послідовність матеріалів: Ви можете отримати елемент у положенні n , ви можете додати елемент у положенні n , ви можете видалити елемент у положенні n .
У Collection
ви не можете цього зробити: "5-й елемент цієї колекції" не визначений, оскільки немає визначеного порядку.
Є й інші спеціалізовані колекції, наприклад, Set
яка додає функцію, що вона ніколи не буде містити один і той же елемент двічі.
Collection
є кореневим інтерфейсом до ієрархії колекцій Java. List
це один інтерфейс, який визначає впорядковану колекцію, інші підінтерфейси - Queue
це, як правило, зберігати елементи, готові до обробки (наприклад, стек ).
Наведена нижче схема демонструє зв'язок між різними типами колекції java:
Map
це не так Collection
.
Java API найкраще відповісти на це
Колекція
Кореневий інтерфейс в ієрархії колекції. Колекція представляє групу предметів, відомих як її елементи. Деякі колекції дозволяють повторювати елементи, а інші - ні. Одні впорядковані, а інші не упорядковані. JDK не забезпечує прямих реалізацій цього інтерфейсу: він забезпечує реалізацію більш конкретних підінтерфейсів, таких як Set and List. Цей інтерфейс зазвичай використовується для передачі колекцій навколо та маніпулювання ними там, де бажана максимальна загальність.
Список (розширює колекцію)
Впорядкована колекція (також відома як послідовність). Користувач цього інтерфейсу має точний контроль над тим, куди в списку вставлений кожен елемент. Користувач може отримати доступ до елементів за допомогою їх цілого індексу (позиція у списку) та здійснювати пошук елементів у списку.
На відміну від наборів, списки зазвичай дозволяють повторювати елементи. Більш формально, списки зазвичай дозволяють пари елементів e1 і e2, такі, що e1.equals (e2), і вони, як правило, дозволяють кілька нульових елементів, якщо вони взагалі дозволяють нульові елементи. Це немислимо, що хтось може захотіти реалізувати список, який забороняє дублікати, викидаючи винятки під час виконання, коли користувач намагається вставити їх, але ми очікуємо, що це використання буде рідкісним.
Список і Набір - це два підкласи колекції.
У списку дані в конкретному порядку.
У програмі Set не може містити однакові дані двічі.
У колекції він просто зберігає дані без конкретного замовлення і може містити повторювані дані.
Колекція - це інтерфейс високого рівня, що описує об'єкти Java, які можуть містити колекції інших об'єктів. Не дуже конкретно в тому, як до них звертаються, чи можуть в одній колекції існувати кілька копій одного і того ж об’єкта чи важливий порядок. Список - це спеціально упорядкована колекція об'єктів. Якщо ви помістите об’єкти в Список у певному порядку, вони залишаться в тому порядку.
І вирішити, де використовувати ці два інтерфейси, набагато менш важливо, ніж вирішити, що конкретна реалізація ви використовуєте. Це буде мати значення для часу та простору роботи вашої програми. Наприклад, якщо ви хочете список, ви можете використовувати ArrayList або LinkedList, кожен з яких матиме наслідки для програми. Для інших типів колекцій (наприклад, набори) застосовуються аналогічні міркування.