Яка різниця між колекцією та списком на Java?


153

Яка різниця між Collectionі Listна Java? Коли я повинен використовувати який?


загальнодоступний інтерфейс Список розширює колекцію {}
rai.skumar

Відповіді:


263

По-перше: a List- це a Collection. Це спеціалізованийCollection , однак, .

А Collection це тільки те: колекція предметів. Ви можете додавати речі, видаляти речі, перебирати речі та запитувати, скільки там вмісту.

A Listдодає до нього інформацію про певну послідовність матеріалів: Ви можете отримати елемент у положенні n , ви можете додати елемент у положенні n , ви можете видалити елемент у положенні n .

У Collectionви не можете цього зробити: "5-й елемент цієї колекції" не визначений, оскільки немає визначеного порядку.

Є й інші спеціалізовані колекції, наприклад, Setяка додає функцію, що вона ніколи не буде містити один і той же елемент двічі.


9
так, список - це упорядкована спеціалізація колекції (але не сортована) +1
атаманроман

2
Список у java розширює інтерфейс колекцій та створює індексовані функції, які допомагають у пошуку та виведенні на основі позиції
frictionlesspulley

188

Collectionє кореневим інтерфейсом до ієрархії колекцій Java. Listце один інтерфейс, який визначає впорядковану колекцію, інші підінтерфейси - Queueце, як правило, зберігати елементи, готові до обробки (наприклад, стек ).

Наведена нижче схема демонструє зв'язок між різними типами колекції java:

колекції java


1
Насправді, як ваш образ, я бачив це, коли готувався до SCJP, але майже забув про ці речі сьогодні.
Труонг Ха

1
Я мушу визнати, що цей образ був викладений з цього блогу . Я теж вперше побачив подібну схему в книзі K&B SCJP .
крок

Ви можете багато чого навчитися з scjp cert, більшість книг на цю тему приголомшливі :)
atamanroman

Я здогадуюсь, Mapце не так Collection.
giannis christofakis

7

Java API найкраще відповісти на це

Колекція

Кореневий інтерфейс в ієрархії колекції. Колекція представляє групу предметів, відомих як її елементи. Деякі колекції дозволяють повторювати елементи, а інші - ні. Одні впорядковані, а інші не упорядковані. JDK не забезпечує прямих реалізацій цього інтерфейсу: він забезпечує реалізацію більш конкретних підінтерфейсів, таких як Set and List. Цей інтерфейс зазвичай використовується для передачі колекцій навколо та маніпулювання ними там, де бажана максимальна загальність.

Список (розширює колекцію)

Впорядкована колекція (також відома як послідовність). Користувач цього інтерфейсу має точний контроль над тим, куди в списку вставлений кожен елемент. Користувач може отримати доступ до елементів за допомогою їх цілого індексу (позиція у списку) та здійснювати пошук елементів у списку.

На відміну від наборів, списки зазвичай дозволяють повторювати елементи. Більш формально, списки зазвичай дозволяють пари елементів e1 і e2, такі, що e1.equals (e2), і вони, як правило, дозволяють кілька нульових елементів, якщо вони взагалі дозволяють нульові елементи. Це немислимо, що хтось може захотіти реалізувати список, який забороняє дублікати, викидаючи винятки під час виконання, коли користувач намагається вставити їх, але ми очікуємо, що це використання буде рідкісним.


3

Список і Набір - це два підкласи колекції.

У списку дані в конкретному порядку.

У програмі Set не може містити однакові дані двічі.

У колекції він просто зберігає дані без конкретного замовлення і може містити повторювані дані.


2

Колекція - це інтерфейс високого рівня, що описує об'єкти Java, які можуть містити колекції інших об'єктів. Не дуже конкретно в тому, як до них звертаються, чи можуть в одній колекції існувати кілька копій одного і того ж об’єкта чи важливий порядок. Список - це спеціально упорядкована колекція об'єктів. Якщо ви помістите об’єкти в Список у певному порядку, вони залишаться в тому порядку.

І вирішити, де використовувати ці два інтерфейси, набагато менш важливо, ніж вирішити, що конкретна реалізація ви використовуєте. Це буде мати значення для часу та простору роботи вашої програми. Наприклад, якщо ви хочете список, ви можете використовувати ArrayList або LinkedList, кожен з яких матиме наслідки для програми. Для інших типів колекцій (наприклад, набори) застосовуються аналогічні міркування.


2

Колекція - це супер інтерфейс списку, тому кожен список Java також є екземпляром колекції. Колекції можна повторювати лише послідовно (і не в певному порядку), тоді як Список дозволяє отримати доступ до елемента в певній позиції за допомогою get(int index)методу.


2

Колекція - це основний інтерфейс ієрархії Java Collections, а Список (Послідовність) - один із підінтерфейсів, що визначає упорядковану колекцію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.