Rozdíl mezi sadou a seznamem

Rozdíl mezi seznamem polí a propojeným seznamem

Než se dostaneme do skutečných rozdílů, dejte nám vědět, o co ve skutečnosti jde?

Co je to sada?

Setkali jsme se s konceptem Set v matematice a Set zde více či méně znamená totéž. Ano, je to sbírka prvků a ve většině případů sbírka podobných prvků. Můžete zkusit přidat tyto prvky do sady a pokusit se pochopit, jak jsou tyto prvky skutečně uloženy.

Vstup do sady: 20, 50, 10, 30.

Ve skutečnosti je uložen v sadě jako 10, 20, 30, 50.

Prvky jsou zde řazeny a nejsou uloženy v pořadí jejich vložení. To je jeden z rysů sady, že prvky vždy před uložením třídí, a samozřejmě, existují výjimky a jedním z nich je propojený hash, protože udržuje pořadí vkládání prvků.

Pokud jde o počítač, sada obsahuje několik dalších vlastností, jako jsou metody a dědičnost. Metody jsou stejně jako funkce a provádějí určité úkoly, jako je přidání, odebrání nebo iterace sadou prvků. Většina z nás je známá pod pojmem dědičnost a znamená to totéž i zde. Ano, můžeme zdědit metodu z její kolekce, takže ji lze použít s nastaveným rozhraním. Opět mluvíme o novém termínu, tj. O Set Interface, a není to nic jiného než celá sada prvků včetně metod.

Jak ji implementovat?

Pro lepší pochopení jsme reprezentovali Set s jeho syntaxí. Z níže uvedené syntaxe můžete identifikovat různé typy množin, například HashSet a TreeSet.

import java.util. *;

veřejná třída Setexample

public static void main (String args [])

int počet [] = 34, 22,10,60,30,22 25, 17, 76, 12, 88, 57;

Set set = new HashSet ();

Snaž se

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

set.add (počet [i]);

System.out.println (set);

TreeSet sortSeteg = nový TreeSet (set);

System.out.println („Zde máme seřazený výstup:“);

System.out.println (sortSeteg);

System.out.println („Podívejte se na první prvek:“ + (Integer) sortSet.first ());

System.out.println („Podívejte se na poslední prvek:“ + (Integer) sortSet.last ());

úlovek (výjimka e)

Výstup výše uvedeného kódu je následující.

[25, 17, 76, 12, 88]
Zde máme tříděný výstup:
[12, 17, 25, 76, 88]
Podívejte se na první prvek: 12
Podívejte se na poslední prvek: 88

Co je seznam?

Seznam rozšiřuje kolekci podobně jako sada, ale zachovává pořadí vložení. Pokuste se přidat následující jména do seznamu a uvidíte, jak je do něj přidán.

Vstup do seznamu: John, Nancy, Mary, Alice.

Jak je uložen v seznamu: John, Nancy, Mary, Alice.

Stačí si všimnout pořadí, v jakém jsou vloženy. Můžete identifikovat, že 'John' je prvním prvkem na vstupu i výstupu a následuje stejné pořadí, ve kterém jsou jména vložena. Můžeme to dokonce považovat za jednu z hlavních vlastností Seznamu.

Jak ji implementovat?

Podívejme se na některé z metod List, jako je ArrayList a LinkedList, v níže uvedené syntaxi.

import java.util. *;
veřejná třída Collectionssample

public static void main (String [] args)

Seznam a1 = nový ArrayList ();
a1.add („John“);
a1.add („Nancy“);
a1.add („Mary“);
a1.add („Alice“);
System.out.println (”ArrayList Elements are”);
System.out.print („\ t“ + a1);

Seznam 11 = nový LinkedList ();
l1.add („Silvia“);
l1.add („Arjun“);
l1.add („Deepika“);
l1.add („Susan“);
System.out.println ();
System.out.println („ElementsListList Elements“);
System.out.print („\ t“ + l1);

Výstup výše uvedené syntaxe je následující.

Prvky pole seznamu jsou

[John, Nancy, Mary, Alice]

Propojené prvky seznamu

[Silvia, Arjun, Deepika, Susan]

Z výše uvedeného kódu je zcela zřejmé, že jak ArrayList, tak LinkList udržuje pořadí vkládání.

Jak se liší?

  • Metody a popisy:

Sada a seznam má své vlastní metody a podívejme se na několik z nich zde.

S. Ne Metody množin Seznam - metody
1. přidat() - Jedná se o přidání objektů do kolekce. void add (int index, Object obj) - Přidá objekt „obj“ do zadaného „indexu“ seznamu vyvolávajících a přesouváním předchozích prvků zajistí, že nebude přepsán žádný prvek..
2. Průhledná() - Jedná se o odebrání objektů ze sbírky. boolean addAll (index int, kolekce c) - Přidá celou kolekci „c“ do vyvolávacího seznamu a do zadaného „indexu“. Zajišťuje také, aby nebyly přepsány žádné prvky. Můžeme také zkontrolovat správnost jeho fungování zkoumáním návratové hodnoty. Pokud je změna úspěšná, vrací hodnotu „true“, vrací hodnotu „false“.
3. obsahuje () - Je to zkontrolovat, zda sada obsahuje určitý objekt v něm. Pokud je objekt v sadě, vrátí hodnotu „true“. Objekt get (int index) - Vrací prvek nebo objekt v zadaném „indexu“.
4. je prázdný() - Je to zjistit, zda kolekce pomáhá, protože v ní nejsou žádné prvky. Pokud neexistuje žádný prvek, vrátí hodnotu „true“. int lastIndexOf (Object obj) - Funguje to podobně jako na zadní straně indexOf () Metoda. Vrátí poslední výskyt zadaného objektu 'obj' a vrátí se hodnota '1', pokud v seznamu žádný takový objekt neexistuje. Proto může být také použit jako obsahuje () Metoda nastaveného rozhraní.
6. odstranit() - Jedná se o odebrání prvku ze sbírky zadáním jako parametru metody. ListIterator listIterator () - Vrací iterátor do počátečního indexu seznamu.
7. velikost() - Je to spočítat počet objektů nebo prvků, které má kolekce. ListIterator listIterator (int index) - Pomáhá při opakování seznamu vyvolávajících počínaje zadaným „indexem“.
8. - Odebrání objektu (index int) - Odstraní objekt na zadaném indexu a vrátí odstraněný prvek jako výsledek. Také snižuje výsledné indexy seznamu, aby odrážely odstranění.
9. - Sada objektů (int index, Object obj) - Je to přiřazení objektu 'obj' k vyvolávacímu seznamu na zadaném 'indexu'.
10. - Seznam podadresářů (int start, int end) - Jedná se o zahrnutí objektů z indexu 'start' do indexu 'end' v seznamu, který vyvolal metodu.
  • Údržba objednávky vložení:

Sada nikdy neudržuje pořadí prvků, ve kterých jsou vloženy, zatímco seznam ji udržuje. Pro LinkedHashSet existuje výjimka, protože zachovává pořadí vložení, ale jiná sada, například HashSet a TreeSet, před uložením třídí prvky. Totéž je popsáno s příklady níže.

Soubor Vstup: Kočka, panenka, Apple.

Uloženo jako: Apple, Cat, Doll.

Vstup do seznamu: Kočka, panenka, Apple.

Uloženo jako: Cat, Doll, Apple.

  • Přítomnost duplikátů:

Sada nikdy neumožňuje duplikáty, zatímco seznam to umožňuje. Pokud je třeba do seznamu přidat duplicitní hodnotu, přepíše se. Podívejte se na ukázky duplikátů Set and List.

Nastavit vstup: 10, 20, 20, 50.

Uloženo jako: 10, 20, 50.

Vstup do seznamu: 10, 20, 20, 50.

Uloženo jako: 10, 20, 20, 50.

  • Nulové hodnoty:

Sada může mít pouze jednu nulovou hodnotu, zatímco seznam může mít více než jednu nulovou hodnotu a není omezen na žádné číslo.

Nastavit vstup: null, null, Man, Dog, Plane.

Uloženo jako: null, pes, muž, letadlo.

Zadání seznamu: null, null, Man, Dog, Plane.

Uloženo jako: null, null, člověk, pes, letadlo.

  • Použití Iterator & ListIterator:

Metoda Iterator funguje dobře jak se sadou, tak se seznamem, zatímco metoda ListIterator funguje pouze se seznamem. ListIterator lze použít k pohybu vpřed i vzad v seznamu.

  • Přítomnost třídy Legacy:

Sada nemá žádnou starou třídu, zatímco rozhraní seznamu má dědictví nazývané jako 'vektor'. Vektor používá rozhraní seznamu, a proto udržuje pořadí vložení. Kvůli synchronizačnímu úsilí je výkon vektoru navíc, delece a aktualizace trochu pomalejší.

  • Implementace:

Několik implementací sady je HashSet, LinkedHashSet a TreeSet. Několik implementací seznamu obsahuje ArrayList a LinkedList.

Kdy použít Set & List?

Použití sady a seznamu je čistě závislé na požadavku údržby objednávky vložení. Protože jsme se dozvěděli, že sada nikdy neudržuje pořadí vkládání, lze ji použít, když je pořadí méně důležité. Podobným způsobem použijte seznam, pokud potřebujete zachovat také sekvenci vkládání.

Rozdíly v tabulkové formě:

S. Ne Rozdíly v Soubor Seznam
1. Objednávka vložení Zachovává pořadí vkládání. První vložený zůstává na prvním místě a tak nezávisle na jeho hodnotě. Nikdy neudržuje pořadí vkládání.
2. Metody Používá metody jako add (), clear (), obsahuje (), isEmpty (), remove () a size (). Používá metody jako add (), addAll (), get (), lastIndexOf (), ListIterator () s parametrem nebo bez parametru, remove (), set () a subList ().
3. Duplikáty Nikdy nedovoluje duplikáty a v případě takového vzhledu se hodnota přepíše. Umožňuje duplikáty.
4. Nulové hodnoty Může mít pouze jednu nulovou hodnotu. Může mít libovolný počet nulových hodnot.
5. Použití Iterator () & listIterator () Používá pouze metodu iterátor (). Používá iterator () i listIterator ().
6. Přítomnost třídy Legacy Neexistuje žádná třída Legacy. Má jako třídu Legacy nazývanou jako vektor.
7. Implementace Málo implementací rozhraní Set je HashSet, LinkedHashSet a Tree Set. Jen málo z implementací rozhraní seznamu jsou LinkedList a ArrayList.

Doufám, že jsme zahrnuli všechny možné rozdíly mezi sadou a seznamem. Pokud máte pocit, že nám něco uniklo, dejte nám prosím vědět.