Jaka jest różnica między Collection
iw List
języku Java? Kiedy należy użyć którego?
java
collections
Truong Ha
źródło
źródło
Odpowiedzi:
Po pierwsze: a
List
jestCollection
. Jest to jednak specjalizacjaCollection
.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.źródło
Collection
jest głównym interfejsem hierarchii kolekcji java.List
to jeden interfejs podrzędny, który definiuje uporządkowaną kolekcję, inne interfejsy podrzędne toQueue
zazwyczaj przechowujące elementy gotowe do przetwarzania (np. stos ).Poniższy diagram ilustruje relacje między różnymi typami kolekcji Java:
źródło
Map
nie jestCollection
.Najlepszą odpowiedzią na to jest Java API
Kolekcja
Lista (rozszerza kolekcję)
źródło
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.
źródło
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.
źródło
Kolekcja jest super interfejsem List, więc każda lista Java jest również instancją kolekcji. Kolekcje są iterowalne tylko sekwencyjnie (i bez określonej kolejności), podczas gdy lista umożliwia dostęp do elementu w określonej pozycji za pomocą
get(int index)
metody.źródło
Kolekcja jest głównym interfejsem hierarchii kolekcji Java, a lista (sekwencja) jest jednym z interfejsów podrzędnych definiujących uporządkowaną kolekcję.
źródło