Różnica między listą tablic a listą połączoną
Zanim przejdziemy do faktycznych różnic, dowiedzmy się, jakie naprawdę są?
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.
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
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.
Spójrzmy na kilka metod List, takich jak ArrayList i LinkedList w poniższej składni.
import java.util. *;
Kolekcje klasy publicznejpublic 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.
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ę. |
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.
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.
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.
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.
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.
Kilka implementacji zestawu to HashSet, LinkedHashSet i TreeSet. Kilka implementacji List zawiera ArrayList i LinkedList.
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.
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ć.