Różnica między zestawem a listą
- 4696
- 188
- Krystyna Urbanowicz
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 CollectionsSamplepublic 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ć.