Różnica między zestawem a listą

Różnica między zestawem a listą

Różnica między listą tablic a powiązaną listą

Zanim przejdziemy do rzeczywistych różnic, poznajmy, czym naprawdę są?

Co to jest zestaw?

Natknęliśmy się na koncepcję zestawu matematyki, a zestaw 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ć drukować, aby zrozumieć, jak jest on faktycznie przechowywany.

Wejście do zestawu: 20, 50, 10, 30.

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

Elementy są tu sortowane i są przechowywane nie w ich kolejności wstawiania. Jest to jedna z funkcji zestawu, które zawsze sortuje elementy przed przechowywaniem i oczywiście są wyjątki od tego, a jednym z nich jest LinkedHashset, ponieważ utrzymuje kolejność wprowadzania elementów.

W kategoriach komputerowych zestaw zawiera kilka dodatkowych właściwości, takich jak metody i dziedzictwo. Metody są takie jak funkcje i wykonują pewne zadania, takie jak dodawanie, usuwanie lub iterowanie przez zestaw elementów. Większość z nas jest znana z terminu dziedzictwo i oznacza to to samo tutaj. Tak, możemy odziedziczyć metodę z jej kolekcji, aby mogła być używana z interfejsem SET. Znowu mówimy o nowym terminie ja.mi. interfejs ustawiony i jest to nic więcej niż cały zestaw elementów, w tym metody.

Jak to wdrożyć?

Aby uzyskać lepsze zrozumienie, reprezentowaliśmy zestaw z jego składnią. Na podstawie poniższej składni można zidentyfikować różne typy zestawu, takie jak Hashset i Treeset.

Importuj Java.Util.*;

Setexample klasy publicznej

public static void main (string args [])

int count [] = 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++)

ustawić.Dodaj (Count [i]);

System.na zewnątrz.println (set);

Treeset sortedseteg = new Treeset (set);

System.na zewnątrz.println („tutaj mamy posortowane dane wyjściowe:”);

System.na zewnątrz.println (sortedseteg);

System.na zewnątrz.println („Spójrz na pierwszy element:„+ (liczba całkowita) sortedset.Pierwszy());

System.na zewnątrz.println („Spójrz na ostatni element:„+ (liczba całkowita) sortedset.ostatni());

Catch (wyjątek e)

Wyjście powyższego kodu jest następujące.

[25, 17, 76, 12, 88]
Tutaj mamy 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ę podobną do tego, jak zrobił to zestaw, ale utrzymuje kolejność wstawiania. Próbujesz dodać następujące nazwy do listy i zobaczysz, jak można do niej dodać.

Wejście do listy: John, Nancy, Mary, Alice.

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

Wystarczy zauważyć kolejność, w jakiej są wstawiane.  Możesz zidentyfikować, że „John” jest pierwszym elementem danych wejściowych, a także wyjściowych, a następnie w tej samej kolejności, w jakiej nazwy są wstawiane. Możemy nawet rozważyć tę jedną z głównych właściwości listy.

Jak to wdrożyć?

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

Importuj Java.Util.*;
Klasy publiczne CollectionsSample

public static void main (string [] args)

Lista a1 = new ArrayList ();
A1.Dodaj („John”);
A1.Dodaj („Nancy”);
A1.Dodaj („Mary”);
A1.Dodaj („Alice”);
System.na zewnątrz.println („elementy arrayList to”);
System.na zewnątrz.druk („\ t” + a1);

Lista l1 = new LinkedList ();
L1.Dodaj („Silvia”);
L1.Dodaj („Arjun”);
L1.Dodaj („Deepika”);
L1.Dodaj („Susan”);
System.na zewnątrz.println ();
System.na zewnątrz.println (”elementy LinkedList to”);
System.na zewnątrz.druk („\ t” + l1);

Wyjście powyższej składni jest następujące.

Elementy arraylist są

[John, Nancy, Mary, Alice]

Elementy Linkedlist

[Silvia, Arjun, Deepika, Susan]

Z powyższego kodu jest bardzo jasne, że zarówno tablica, jak i LinkedList utrzymują kolejność wstawienia.

Jak się różnią?

  • Metody i opisy:

Zestaw i lista ma swoje własne metody i przyjrzyjmy się kilku z nich tutaj.

S.NIE Zestaw - metody Lista - Metody
1. dodać() - Ma dodać obiekty do kolekcji. void add (int indeks, obiekt OBJ) - Dodaje obiekt „OBJ” na określonym „indeksie” listy wywołującej i upewnia się, że żaden element nie jest zastąpiony przez zmianę poprzednich elementów.
2. jasne() - Ma na celu usunięcie obiektów z kolekcji. boolean addall (indeks int, kolekcja c) - Dodaje całą kolekcję „C” do listy wywołującej i na określonym „indeksie”. Zapewnia również, że żadne elementy nie zostaną zastąpione. Możemy również sprawdzić poprawność jego działania, badając wartość zwracania. Zwraca „prawdziwe”, jeśli zmiana się powiodła, w przeciwnym razie zwraca wartość „fałsz”.
3. zawiera() - Ma to sprawdzić, czy zestaw zawiera w nim określony obiekt. Zwraca wartość „true”, jeśli obiekt jest obecny w zestawie. Obiekt GET (INT INDEKS) - Zwraca element lub obiekt w określonym „indeksie”.
4. jest pusty() - Ma na celu ustalenie, czy kolekcja pomaga jako żadnych elementów. Zwraca wartość „prawdziwa”, jeśli nie ma elementu. int LastIndexof (Object OBJ) - Działa podobnie do odwrotności 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żna go również użyć jako zawiera() Metoda interfejsu SET.
6. usunąć() - Ma to usunąć element z kolekcji, określając go jako parametr do metody. Listiterator Listiterator () - Zwraca iterator do indeksu początkowego listy.
7. rozmiar() - To policzyć liczbę obiektów lub elementów, które ma kolekcja. Listiterator Listiterator (indeks int) - Pomaga w iterowaniu listy wywołującej zaczynającej się od określonego „indeksu”.
8. - Usuń obiekt (indeks int) - Usuwa obiekt w określonym „indeksie” i zwraca usunięty element w wyniku. Zmniejsza także wynikowe wskaźniki listy w celu odzwierciedlenia usunięcia.
9. - Zestaw obiektu (indeks int, obiekt OBJ) - Jest to przypisanie obiektu „OBJ” do listy wywołującej w określonym „indeksie”.
10. - List Sublist (int start, int end) - Ma zawierać obiekty z indeksu „start” do indeksu „koniec” na liście, która wywołała metodę.
  • Konserwacja zamówienia wstawiania:

Zestaw nigdy nie utrzymuje kolejności elementów, w których są do niego wstawiane. Istnieje wyjątek od tej reguły dla LinkedHashset, ponieważ utrzymuje kolejność wstawiania, ale drugi zestaw, taki jak Hashset i Treeset, sortuje elementy przed przechowywaniem. To samo opisano z przykładami poniżej.

Ustawić Wejście: kot, lalka, jabłko.

Przechowywane jako: jabłko, kot, lalka.

Wejście listy: kot, lalka, jabłko.

Przechowywane jako: kot, lalka, jabłko.

  • Obecność duplikatów:

Zestaw nigdy nie pozwala duplikatom, podczas gdy lista na to pozwala. Jeśli do listy należy dodać do listy, zostanie to zastąpione. Spójrz na próbki dla zestawu i lista duplikatów.

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

Przechowywane jako: 10, 20, 50.

Wejście listy: 10, 20, 20, 50.

Przechowywane jako: 10, 20, 20, 50.

  • Wartości zerowe:

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

Ustaw wejście: null, null, man, pies, samolot.

Przechowywane jako: null, pies, człowiek, samolot.

Wejście listy: NULL, NULL, MAN, Pies, Plane.

Przechowywane jako: null, null, mężczyzna, pies, samolot.

  • Korzystanie z iteratora i listiteratora:

Metoda iteratora działa dobrze zarówno z zestawem, jak i listy, podczas gdy listiterator metody działa tylko z listą. Listiterator może być używany do przejścia do przodu, a także do tyłu za pośrednictwem listy.

  • Obecność Legacy Class:

Zestaw nie ma żadnej klasy, podczas gdy interfejs listy ma spuściznę o nazwie „wektor”.  Wektor używa interfejsu listy, a zatem utrzymuje kolejność wstawiania. Ze względu na wysiłki synchronizacji wydajność wektora oprócz dodatków, delety i aktualizacje są nieco wolniejsze.

  • Wdrożenia:

Kilka zestawu implementacji to Hashset, LinkedHashset i Treeset. Kilka implementacji listy obejmuje ArrayList i LinkedList.

Kiedy korzystać z zestawu i listy?

Wykorzystanie zestawu i listy zależy wyłącznie od wymagania utrzymania kolejności wprowadzania. Jak dowiedzieliśmy się, że zestaw nigdy nie utrzymuje kolejności wstawienia, można go użyć, gdy zamówienie ma mniejsze znaczenie. W podobny sposób użyj listy, gdy trzeba również utrzymać sekwencję wstawiania.

Różnice w formie tabelarycznej:

S.NIE Różnice w Ustawić Lista
1. Kolejność wstawiania Utrzymuje kolejność wstawiania. Pierwsza włożona pozostaje przede wszystkim i tak bez względu na swoją wartość. Nigdy nie utrzymuje kolejności wstawiania.
2. Metody Wykorzystuje metody takie jak add (), clear (), zawiera (), isEmpty (), remove () i rozmiar (). Wykorzystuje metody takie jak add (), addall (), get (), lastIndexof (), listiterator () z parametrem lub bez, remove (), set () i sublist ().
3. Duplikaty Nigdy nie pozwala na duplikaty, aw przypadku takich wyglądów wartość jest zastąpiona. Umożliwia duplikaty.
4. Wartości zerowe Może mieć tylko jedną wartość zerową maksymalnie. Może mieć dowolną liczbę wartości zerowych.
5. Użycie iterator () i Listiterator () Używa tylko metody iterator (). Używa zarówno iteratora (), jak i Listiterator ().
6. Obecność spuścizny Nie ma lekcji Legacy. Ma jako starszą klasę o nazwie wektor.
7. Wdrożenia Kilka zbiorów zestawu interfejsu to hashset, linkedhashset i zestaw drzew. Kilka implementacji interfejsu listy to LinkedList i ArrayList.

Mam nadzieję, że uwzględniliśmy każdą możliwą różnicę między zestawem a listą. Jeśli czujesz, że coś przegapiliśmy, daj nam znać.