Różnica między zestawem a listą

Różnica między listą tablic a listą połączoną

Zanim przejdziemy do faktycznych różnic, dowiedzmy się, jakie naprawdę są?

Co to jest zestaw?

Spotkaliśmy się z koncepcją Seta w matematyce, a Set tutaj mniej więcej oznacza to samo. Tak, jest to zbiór elementów, aw większości przypadków zbiór podobnych elementów. Możesz spróbować dodać te elementy do zestawu i spróbować wydrukować, aby zrozumieć, jak to jest faktycznie przechowywane.

Dane wejściowe do zestawu: 20, 50, 10, 30.

Jest on faktycznie przechowywany w zestawie jako 10, 20, 30, 50.

Elementy są tutaj sortowane i nie są przechowywane w kolejności wstawiania. Jest to jedna z cech zestawu, że zawsze sortuje elementy przed przechowywaniem i oczywiście istnieją wyjątki od nich, a jednym z nich jest LinkedhashSet, ponieważ utrzymuje porządek wstawiania elementów.

Pod względem komputerowym Zestaw zawiera kilka dodatkowych właściwości, takich jak Metody i Dziedziczenie. Metody są podobne do funkcji i wykonują określone zadania, takie jak dodawanie, usuwanie lub iterowanie zestawu elementów. Większość z nas jest dobrze znana z terminu Dziedziczenie i oznacza to to samo tutaj. Tak, możemy odziedziczyć metodę z jej kolekcji, aby można ją było używać z interfejsem zestawu. Ponownie mówimy o nowym terminie, tj. Interfejsie zestawu, i jest to nic innego jak cały zestaw elementów, w tym metody.

Jak to wdrożyć?

Dla lepszego zrozumienia przedstawiliśmy zestaw ze składnią. Na podstawie poniższej składni można zidentyfikować różne typy zestawów, takie jak HashSet i TreeSet.

import java.util. *;

klasa publiczna Setexample

public static void main (String args [])

liczba całkowita [] = 34, 22,10,60,30,22 25, 17, 76, 12, 88, 57;

Set set = new HashSet ();

próbować

dla (int i = 0; i < 5; i++)

set.add (count [i]);

System.out.println (zestaw);

TreeSet sortedSeteg = new TreeSet (set);

System.out.println („Tutaj mamy posortowane dane wyjściowe:”);

System.out.println (sortedSeteg);

System.out.println („Spójrz na pierwszy element:„ + (liczba całkowita) sortedSet.first ());

System.out.println („Spójrz na ostatni element:„ + (liczba całkowita) sortedSet.last ());

catch (wyjątek e)

Dane wyjściowe powyższego kodu są następujące.

[25, 17, 76, 12, 88]
Oto posortowane dane wyjściowe:
[12, 17, 25, 76, 88]
Spójrz na pierwszy element: 12
Spójrz na ostatni element: 88

Co to jest lista?

Lista rozszerza kolekcję podobnie do zestawu, ale zachowuje kolejność wstawiania. Spróbuj dodać następujące nazwy do listy i sprawdź, jak jest do niej dodany.

Dane wejściowe do listy: John, Nancy, Mary, Alice.

Jak jest przechowywany na liście: John, Nancy, Mary, Alice.

Zwróć uwagę na kolejność ich wstawiania. Możesz zidentyfikować, że „John” jest pierwszym elementem na wejściu i wyjściu, a po nim następuje ta sama kolejność, w jakiej nazwy są wstawiane. Możemy nawet uznać tę jedną z głównych właściwości List.

Jak to wdrożyć?

Spójrzmy na kilka metod List, takich jak ArrayList i LinkedList w poniższej składni.

import java.util. *;
Kolekcje klasy publicznej

public static void main (String [] args)

List a1 = new ArrayList ();
a1.add („John”);
a1.add („Nancy”);
a1.add („Mary”);
a1.add („Alice”);
System.out.println („Elementy ArrayList to”);
System.out.print („\ t” + a1);

List l1 = new LinkedList ();
l1.add („Silvia”);
l1.add („Arjun”);
l1.add („Deepika”);
l1.add („Susan”);
System.out.println ();
System.out.println („Elementy LinkedList to”);
System.out.print („\ t” + l1);

Dane wyjściowe powyższej składni są następujące.

Elementy ArrayList to

[John, Nancy, Mary, Alice]

Elementy LinkedList

[Silvia, Arjun, Deepika, Susan]

Z powyższego kodu jasno wynika, że ​​zarówno ArrayList, jak i LinkedList utrzymują porządek wstawiania.

Jak się różnią?

  • Metody i opisy:

Zestaw i lista mają własne metody i przyjrzyjmy się kilku z nich tutaj.

S.Nie Zestaw - metody Lista - metody
1. Dodaj() - Ma to na celu dodawanie obiektów do kolekcji. void add (int index, Object obj) - Dodaje obiekt „obj” pod określonym „indeksem” listy wywołującej i upewnia się, że żaden element nie zostanie zastąpiony przez przesunięcie poprzednich elementów.
2). jasny() - Ma to na celu usunięcie obiektów z kolekcji. boolean addAll (indeks wewnętrzny, kolekcja c) - Dodaje całą kolekcję „c” do listy wywołującej i pod określonym „indeksem”. Zapewnia również, że żadne elementy nie zostaną nadpisane. Możemy również sprawdzić poprawność jego działania, badając wartość zwracaną. Zwraca „prawda”, jeśli zmiana się powiedzie, w przeciwnym razie zwraca wartość „fałsz”.
3). zawiera () - Ma to na celu sprawdzenie, czy Zestaw zawiera w sobie określony obiekt. Zwraca wartość „prawda”, jeśli obiekt jest obecny w zestawie. Object get (int index) - Zwraca element lub obiekt o określonym „indeksie”.
4. jest pusty() - Ma na celu określenie, czy kolekcja pomaga, ponieważ nie ma w niej żadnych elementów. Zwraca wartość „prawda”, jeśli nie ma elementu. int lastIndexOf (Object obj) - Działa podobnie do rewersu indeks() Metoda. Zwraca ostatnie wystąpienie określonego obiektu „obj”, a wartość „1” jest zwracana, jeśli na liście nie ma takiego obiektu. Dlatego może być również używany jako zawiera () Metoda zestawu interfejsów.
6. usunąć() - Ma to na celu usunięcie elementu z kolekcji poprzez określenie go jako parametru metody. ListIterator listIterator () - Zwraca iterator do początkowego indeksu listy.
7. rozmiar() - Policzy liczbę obiektów lub elementów, które ma kolekcja. ListIterator listIterator (indeks wewnętrzny) - Pomaga w iteracji po liście wywołującej, zaczynając od określonego „indeksu”.
8. - Usunięcie obiektu (indeks wewnętrzny) - Usuwa obiekt pod określonym „indeksem” i zwraca jako wynik usunięty element. Zmniejsza również wynikowe indeksy listy, aby odzwierciedlić usunięcie.
9. - Zestaw obiektów (int index, Object obj) - Ma to przypisać obiekt „obj” do listy wywołującej pod określonym „indeksem”.
10. - List subList (int start, int end) - Ma ona obejmować obiekty od indeksu „start” do indeksu „end” na liście, która wywołała metodę.
  • Obsługa zamówienia reklamowego:

Zestaw nigdy nie zachowuje kolejności elementów, w których są do niego wstawiane, podczas gdy Lista je zachowuje. Istnieje wyjątek od tej reguły dla LinkedHashSet, ponieważ zachowuje ona kolejność wstawiania, ale drugi zestaw, taki jak HashSet i TreeSet, sortuje elementy przed zapisaniem. To samo opisano w przykładach poniżej.

Zestaw Dane wejściowe: Cat, Doll, Apple.

Przechowywane jako: Apple, Cat, Doll.

Wprowadzanie listy: Cat, Doll, Apple.

Przechowywane jako: Kot, Lalka, Jabłko.

  • Obecność duplikatów:

Zestaw nigdy nie zezwala na duplikaty, podczas gdy lista na to pozwala. Jeśli do listy należy dodać zduplikowaną wartość, zostanie ona nadpisana. Spójrz na próbki dla duplikatów Set i List.

Ustaw wejście: 10, 20, 20, 50.

Przechowywane jako: 10, 20, 50.

Wprowadzanie listy: 10, 20, 20, 50.

Przechowywane jako: 10, 20, 20, 50.

  • Wartości zerowe:

Zestaw może mieć tylko jedną wartość null, podczas gdy lista może mieć więcej niż jedną wartość null i nie jest ograniczona do żadnej liczby.

Ustaw dane wejściowe: null, null, Man, Dog, Plane.

Przechowywane jako: null, Dog, Man, Plane.

Wprowadzanie listy: null, null, Man, Dog, Plane.

Przechowywane jako: null, null, Man, Dog, Plane.

  • Zastosowanie Iterator i ListIterator:

Metoda Iterator działa dobrze z Setem i Listą, podczas gdy metoda ListIterator działa tylko z Listem. ListIterator może być używany do przewijania listy do przodu i do tyłu.

  • Obecność starszej klasy:

Zestaw nie ma żadnej starszej klasy, podczas gdy interfejs listy ma starszą nazwę zwaną „wektorem”. Wektor używa interfejsu listy i dlatego zachowuje kolejność wstawiania. Ze względu na wysiłki związane z synchronizacją wydajność wektora w dodawaniu, usuwaniu i aktualizowaniu jest nieco wolniejsza.

  • Realizacje:

Kilka implementacji zestawu to HashSet, LinkedHashSet i TreeSet. Kilka implementacji List zawiera ArrayList i LinkedList.

Kiedy stosować Set & List?

Korzystanie z zestawu i listy zależy wyłącznie od wymogu utrzymania kolejności wprowadzania. Jak dowiedzieliśmy się, że zestaw nigdy nie zachowuje kolejności wstawiania, można go użyć, gdy kolejność ma mniejsze znaczenie. W podobny sposób skorzystaj z Listy, jeśli chcesz zachować kolejność wstawiania.

Różnice w formie tabelarycznej:

S.Nie Różnice w Zestaw Lista
1. Zamówienie reklamowe Utrzymuje porządek wstawiania. Pierwszy wstawiony pozostaje na pierwszym miejscu i tak dalej, niezależnie od jego wartości. Nigdy nie utrzymuje kolejności wstawiania.
2). Metody Wykorzystuje metody takie jak add (), clear (), zawiera (), isEmpty (), remove () i size (). Wykorzystuje metody takie jak add (), addAll (), get (), lastIndexOf (), ListIterator () z parametrem lub bez parametru, remove (), set () i subList ().
3). Duplikaty Nigdy nie dopuszcza duplikatów, aw przypadku takich wystąpień wartość zostaje zastąpiona. Pozwala na duplikaty.
4. Wartości zerowe Może mieć maksymalnie tylko jedną wartość zerową. Może mieć dowolną liczbę wartości zerowych.
5. Korzystanie z Iterator () i listIterator () Używa tylko metody iterator (). Używa zarówno iteratora (), jak i listIterator ().
6. Obecność starszych klas Nie ma klasy Legacy. Ma klasę Legacy zwaną wektorem.
7. Realizacje Kilka implementacji interfejsu Set to HashSet, LinkedHashSet i Tree Set. Kilka implementacji interfejsu List to LinkedList i ArrayList.

Mam nadzieję, że zawarliśmy każdą możliwą różnicę między Zestawem a Listą. Jeśli uważasz, że coś przeoczyliśmy, daj nam znać.