Odpowiedzi:
Po pierwsze: a List
jest Collection
. Jest to jednak specjalizacja Collection
.
A Collection
to po prostu: zbiór przedmiotów. Możesz dodawać rzeczy, usuwać je, iterować po nich i sprawdzać, ile jest tam rzeczy.
A List
dodaje do niego informację o zdefiniowanej sekwencji rzeczy: Możesz pobrać element na pozycji n , możesz dodać element na pozycji n , możesz usunąć element na pozycji n .
W a Collection
nie możesz tego zrobić: „piąty element w tej kolekcji” nie jest zdefiniowany, ponieważ nie ma zdefiniowanej kolejności.
Istnieją również inne wyspecjalizowane kolekcje, na przykład a, Set
które dodają funkcję, że nigdy nie będą zawierać dwukrotnie tego samego elementu.
Collection
jest głównym interfejsem hierarchii kolekcji java. List
to jeden interfejs podrzędny, który definiuje uporządkowaną kolekcję, inne interfejsy podrzędne to Queue
zazwyczaj przechowujące elementy gotowe do przetwarzania (np. stos ).
Poniższy diagram ilustruje relacje między różnymi typami kolekcji Java:
Map
nie jest Collection
.
Najlepszą odpowiedzią na to jest Java API
Kolekcja
Główny interfejs w hierarchii kolekcji. Kolekcja reprezentuje grupę obiektów nazywanych jej elementami. Niektóre kolekcje zezwalają na zduplikowane elementy, a inne nie. Niektóre są uporządkowane, a inne nieuporządkowane. JDK nie zapewnia żadnych bezpośrednich implementacji tego interfejsu: zapewnia implementacje bardziej szczegółowych podinterfejsów, takich jak Set i List. Ten interfejs jest zwykle używany do przekazywania kolekcji i manipulowania nimi tam, gdzie wymagana jest maksymalna ogólność.
Lista (rozszerza kolekcję)
Uporządkowana kolekcja (nazywana również sekwencją). Użytkownik tego interfejsu ma precyzyjną kontrolę nad tym, gdzie na liście wstawiany jest każdy element. Użytkownik może uzyskiwać dostęp do elementów według ich indeksu liczb całkowitych (pozycja na liście) i wyszukiwać elementy na liście.
W przeciwieństwie do zestawów listy zazwyczaj pozwalają na zduplikowane elementy. Bardziej formalnie, listy zazwyczaj dopuszczają pary elementów e1 i e2, takie jak e1.equals (e2), i zazwyczaj dopuszczają wiele elementów zerowych, jeśli w ogóle dopuszczają elementy zerowe. Nie jest wykluczone, że ktoś mógłby chcieć zaimplementować listę, która zabrania duplikatów, rzucając wyjątki czasu wykonywania, gdy użytkownik próbuje je wstawić, ale spodziewamy się, że takie użycie będzie rzadkie.
Lista i zestaw to dwie podklasy kolekcji.
Na liście dane są w określonej kolejności.
W zestawie nie może zawierać dwukrotnie tych samych danych.
W kolekcji po prostu przechowuje dane bez określonej kolejności i może zawierać zduplikowane dane.
Kolekcja to interfejs wysokiego poziomu opisujący obiekty Java, które mogą zawierać kolekcje innych obiektów. Nie jest bardzo szczegółowe, w jaki sposób uzyskuje się do nich dostęp, czy wiele kopii tego samego obiektu może istnieć w tej samej kolekcji lub czy kolejność jest ważna. Lista jest konkretnie uporządkowaną kolekcją obiektów. Jeśli umieścisz obiekty na liście w określonej kolejności, pozostaną w tej kolejności.
A decyzja, gdzie użyć tych dwóch interfejsów, jest znacznie mniej ważna niż decyzja, jaka jest konkretna implementacja, której używasz. Będzie to miało wpływ na wydajność programu w czasie i przestrzeni. Na przykład, jeśli chcesz mieć listę, możesz użyć ArrayList lub LinkedList, z których każdy będzie miał wpływ na aplikację. W przypadku innych typów kolekcji (np. Zestawów) obowiązują podobne kwestie.