Większość języków programowania używa tablic do przechowywania zestawu danych tego samego typu. Jedną z głównych wad tablic jest to, że po zadeklarowaniu rozmiaru tablicy nie można go modyfikować. Jeśli programista chce zapisać wartości przekraczające rozmiar tablicy, powinien utworzyć nową tablicę i skopiować istniejące elementy do nowej tablicy. W takich sytuacjach można użyć kolekcji. Możliwe jest dodawanie elementów, usuwanie elementów i wiele innych operacji przy pomocy kolekcji. Istnieją różne rodzaje zbiorów dostępnych w językach programowania, takich jak Java. Lista i zestaw to interfejsy hierarchii kolekcji. Podstawowym interfejsem dla innych interfejsów jest Kolekcja. The kluczowa różnica jest między List a Set Lista obsługuje wielokrotne przechowywanie tego samego elementu, a Set nie obsługuje wielokrotnego przechowywania tego samego elementu. Dlatego zestaw nie zezwala na powielanie.
1. Przegląd i kluczowa różnica
2. Co to jest lista
3. Co jest ustawione
4. Podobieństwa między listą a zestawem
5. Porównanie obok siebie - zestawienie vs zestaw w formie tabelarycznej
6. Podsumowanie
Lista jest interfejsem rozszerzającym interfejs Collection. Interfejs Collection oferuje wiele metod. Metoda add pomaga dodać element. „Metoda usuwania” polega na usunięciu elementu. Istnieje „metoda addAll” do dodawania wielu elementów, a „metoda removeAll” do usuwania elementów z kolekcji. Metoda zawiera pomaga ustalić, czy określony obiekt jest obecny na liście, czy nie. „Zawiera wszystko” ma na celu sprawdzenie, czy zbiór obiektów jest obecny w kolekcji. Metoda iteratora służy do przechodzenia między elementami listy. Gdy List rozszerza Kolekcję, wszystkie metody Kolekcji należą do Listy. Oprócz tych metod lista zawiera metody takie jak get i set. Programista może uzyskać wartość pod określonym indeksem za pomocą metody get. Programista może ustawić wartość pod określonym indeksem za pomocą metody set. „IndexOf” służy do znalezienia indeksu elementu.
Na liście operacje można wykonywać zgodnie z pozycją. Programista może dostarczyć element danych, który ma zostać dodany do indeksu. Zostanie więc dodany do określonego indeksu. Jeśli programista nie poda indeksu, element zostanie dodany na końcu listy. Utrzymuje również wstawioną kolejność. Jeśli element 1 zostanie dodany, a następnie element2, wówczas element1 będzie przed elementem2.
Rysunek 01: Lista i zestaw
ArrayList, LinkedList, Vector to niektóre klasy, które implementują List. W ArrayList dostęp do elementu jest szybki, ale wstawianie i usuwanie jest niższe. ArrayList nie jest bezpieczny dla wątków. Dostęp do tej samej tablicy ArrayList z wielu wątków może nie dać tego samego rezultatu. W LinkedList elementy są połączone zarówno do tyłu, jak i do przodu. Wstawianie i usuwanie elementów za pomocą LinkedList jest szybsze niż ArrayList. LinkedList implementuje zarówno List, jak i Kolejkę. Wektor jest podobny do ArrayList, ale jest bezpieczny dla bieżnika, ponieważ wszystkie metody są zsynchronizowane.
Zestaw to interfejs rozszerzający interfejs Collection. Ponieważ interfejs Set rozszerza Collection, wszystkie metody Collection należą również do Seta. Zestaw nie obsługuje wartości duplikacji. Dlatego programista nie może dwukrotnie zapisać tego samego elementu. Zachowuje unikalny zestaw elementów. Interfejs SortedSet rozszerza interfejs Set. SortedSet utrzymuje elementy w posortowanej kolejności. Interfejs NavigableSet rozszerza SortedSet. NavigableSet zapewnia metody nawigacji, takie jak dolna, podłogowa, sufitowa itp.
HashSet, LinkedHashSet i TreeSet to niektóre klasy, które implementują interfejs Set. The HashSet implementuje interfejs Set. Nie utrzymuje wstawionej kolejności. Jeśli wartości zostaną wstawione jako a, x, b, mogą być przechowywane jako x, a, b. The LinkedSet utrzymuje wstawioną kolejność. Jeśli elementy zostaną wstawione w kolejności a, x, b, kolejność przechowywania będzie wynosić a, x, b. The TreeSet implementuje Set i NavigableSet. Nie utrzymuje kolejności wstawiania, ale przechowuje elementy w posortowanej kolejności. Jeśli wstawiona kolejność to a, c, b, wówczas elementy zostaną zapisane jako a, b, c. Wszystkie HashSet, LinkedHashSet i TreeSet nie będą miały żadnych zduplikowanych elementów.
Lista kontra zestaw | |
Interfejs listy to pod-interfejs kolekcji, który zawiera metody wykonywania operacji, takich jak wstawianie, usuwanie w oparciu o indeks. | Ustaw interfejs to pod-interfejs kolekcji, który zawiera metody wykonywania operacji, takich jak wstawianie, usuwanie elementów przy zachowaniu unikalnych elementów. |
Klasy | |
ArrayList, Vector i LinkedList to klasy, które implementują interfejs List. | HashSet, LinkedHashSet i TreeSet to klasy, które implementują interfejs Set. |
Powielanie elementów | |
Lista obsługuje duplikację elementów. | Zestaw nie obsługuje duplikacji elementów. Elementy są wyjątkowe. |
Kolekcje służą do dynamicznego przechowywania elementów. Języki programowania, takie jak Java, zapewniają interfejs Collection. List i Set to dwa interfejsy należące do interfejsu Collection. Oba interfejsy rozszerzają kolekcję. W tym artykule omówiono różnicę między listą a zestawem. Kluczową różnicą między Listą a Setem jest to, że List obsługuje wielokrotne przechowywanie tego samego elementu, podczas gdy Set nie obsługuje wielokrotnego przechowywania tego samego elementu. Zestaw zawsze zachowuje unikalne elementy.
1.Punkt, samouczki. „Java Collections.”, Tutorials Point, 8 stycznia 2018 r. Dostępne tutaj