Nastavit a Seznam

Anonim

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

Než se dostaneme do skutečných rozdílů, podívejme se, co skutečně jsou?

Co je sada?

My jsme se setkali s pojetím Set v matematice a Set zde vícemé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 složky Nastavit a zkusit tisk, abyste pochopili, jak je skutečně uložen.

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

Je skutečně uložen v sadě jako 10, 20, 30, 50.

Prvky se zde třídí a nejsou uloženy v pořadí jejich vložení. Jedná se o jednu z funkcí Set, která vždy pořadí prvků před uložením a samozřejmě existují výjimky a jeden je LinkedhashSet, protože zachovává pořadí vkládání prvků.

Z hlediska počítačů obsahuje Sada několik dalších vlastností, jako jsou Metody a Dědičnost. Metody jsou stejně jako funkce a dělají určité úkoly, jako je přidávání, odstraňování nebo iterace prostřednictvím sady prvků. Většina z nás je dobře známá z termínu dědictví a to znamená totéž. Ano, můžeme dědit metodu z její sbírky, takže ji lze použít s rozhraním Set. Opět hovoříme o novém termínu, tj. Rozhraní Set, a není to nic jiného než celý soubor prvků včetně metod.

Jak jej implementovat?

Pro lepší pochopení jsme představili sadu s její syntaxí. Z níže uvedené syntaxe můžete identifikovat různé typy sad, například HashSet a TreeSet.

import java.util. *;

veřejná třída Setexample {

public static void hlavní (String args []) {

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

Soubor set = nový HashSet();

Snaž se {

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

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

}

System.out.println (nastaveno);

TreeSet sortSeteg = nový TreeSet(soubor);

System.out.println ("Zde máme tříděný výstup:");

System.out.println (sortSeteg);

System.out.println ("Podívejte se na první prvek:" + (Integer) sortedSet.first ());

System.out.println ("Podívejte se na poslední prvek:" + (Integer) sortedSet.last ());

}

catch (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 sbírku podobně jako soubor, ale udržuje pořadí vložení. Pokuste se do seznamu přidat následující názvy a zjistěte, jak se k nim přidávají.

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

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

Stačí si všimnout pořadí, ve kterém jsou vloženy. Můžete zjistit, že "John" je prvním prvkem na vstupu i výstupu a je následován stejným pořadím, ve kterém jsou vložena jména. Dokonce můžeme považovat tuto jednu z hlavních vlastností Listu.

Jak jej implementovat?

Podívejme se na několik metod z Listu, jako jsou ArrayList a LinkedList v níže uvedené syntaxi.

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

veřejná statická prázdná hlavní (String [] args) {

Seznam a1 = nový ArrayList (); a1.add ("John"); a1.add ("Nancy"); a1.add ("Mary"); a1.add ("Alice"); System.out.println ("prvky ArrayList jsou"); System.out.print (" t" + a1);

Seznam l1 = nový LinkedList (); ll.add ("Silvia"); ll.add ("Arjun"); l1.add ("Deepika"); l1.add ("Susan"); System.out.println (); System.out.println ("prvky LinkedList jsou"); System.out.print (" t" + l1); }}

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

Elementy ArrayList jsou

[John, Nancy, Mary, Alice]

LinkedList Elements

[Silvia, Arjun, Deepika, Susan]

Z výše uvedeného kódu je zřejmé, že ArrayList a LinkedList udržují pořadí vložení.

Jak se liší?

  • Metody a popisy:

Soubor a Seznam mají své vlastní metody a podíváme se na ně několik.

S.No Set - metody Seznam - Metody
1. přidat() - Je třeba přidat objekty do kolekce. void add (int index, Object obj) - Přidává objekt 'obj' na zadaném 'indexu' vyvolávacího seznamu a zajišťuje, že žádný prvek není přepsán posunem předchozích prvků.
2. Průhledná() - Je třeba odstranit objekty ze sbírky. boolean addAll (int index, sbírka c) - Přidá celou sbírku "c" do vyvolávacího seznamu a v zadaném "indexu". Zabezpečuje také, aby nebyly přepsány žádné prvky. Můžeme také zkontrolovat správnost jeho činnosti tím, že zkoumáme návratovou hodnotu. Pokud je změna úspěšná jinak, vrátí hodnotu "true", vrátí hodnotu "false".
3. obsahuje () - Je třeba zkontrolovat, zda sada obsahuje určitý objekt. Vrací hodnotu "true", pokud je objekt v sadě. Objekt get (int index) - Vrací element nebo objekt na zadaném 'indexu'.
4. je prázdný() - Je třeba určit, zda sbírka pomáhá, neboť v něm nejsou žádné prvky. Vrací hodnotu "true", pokud není žádný prvek. int lastIndexOf (Object obj) - Funguje podobně jako na zadní straně indexOf () Metoda. Vrátí poslední výskyt zadaného objektu "obj" a vrací se hodnota "1", pokud v seznamu neexistuje žádný takový objekt. Proto může být také použit jako obsahuje () Metoda rozhraní rozhraní.
6. odstranit() - Je třeba odebrat prvek ze sbírky zadáním parametru metody. ListIterator listIterator () - Vrátí iterátor na počáteční index seznamu.
7. velikost() - Je třeba počítat počet objektů nebo prvků, které má sbírka. ListIterator listIterator (int index) - Pomáhá při iteraci prostřednictvím vyvolávacího seznamu začínajícího na zadaném 'indexu'.
8. Odstranit objekt (int index) - Vymaže objekt na zadaném "indexu" a výsledek se vrací jako výsledek. Rovněž snižuje výsledné indexy seznamu tak, aby odrážely odstranění.
9. Sada objektů (int index, Object obj) - Je třeba přiřadit objekt 'obj' do vyvolávacího seznamu na zadaném 'indexu'.
10. Seznam subList (int start, int end) - Obsahuje objekty z indexu 'start' na index 'end' v seznamu, který vyvolal metodu.
  • Údržba objednávky:

Sada nikdy neudržuje pořadí prvků, do kterých jsou vloženy, zatímco seznam ji udržuje. Existuje výjimka z tohoto pravidla pro LinkedHashSet, protože zachovává pořadí vložení, ale ostatní sady, jako například HashSet a TreeSet, třídí prvky před jejich uložením. Totéž je popsáno níže.

Soubor Vstup: Cat, Doll, Apple.

Uloženo jako: Apple, Cat, Doll.

Seznam vstupů: Cat, Doll, Apple.

Uloženo jako: Cat, Doll, Apple.

  • Přítomnost duplikátů:

Soubor nikdy neumožňuje duplikáty, zatímco seznam dovoluje. Pokud má být do seznamu přidána duplicitní hodnota, pak se přepsá. Podívejte se na vzorky pro duplikáty Set a List.

Nastavit vstup: 10, 20, 20, 50.

Uloženo jako: 10, 20, 50.

Seznam vstupů: 10, 20, 20, 50.

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

  • Nulové hodnoty:

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

Nastavit vstup: null, null, muž, pes, rovina.

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

Seznam vstupů: null, null, muž, pes, rovina.

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

  • Použití Iterator & ListIterator:

Metoda Iterator funguje dobře s nastavením i seznamem, zatímco metoda ListIterator pracuje pouze se seznamem. ListIterator lze použít k přesunutí dopředu i zpět do seznamu.

  • Přítomnost třídy Legacy:

Sada nemá žádnou starou třídu, zatímco rozhraní List má odkaz nazvaný jako 'vektor'. Vektor používá rozhraní seznamu, a proto udržuje pořadí vložení. Díky úsilí o synchronizaci je výkon vektoru v doplňcích, mazání a aktualizace pomalejší.

  • Implementace:

Několik implementací Set je HashSet, LinkedHashSet a TreeSet. Několik implementací Seznamu zahrnuje ArrayList a LinkedList.

Kdy použít Set & List?

Použití seznamu a seznamu je čistě závislé na požadavku na zachování objednávky vložení. Jak jsme se dozvěděli, že Sada nikdy neudržuje pořadí vkládání, může být použita, když má příkaz menší význam. Podobným způsobem použijte seznam, pokud potřebujete zachovat sekvenci vložení také.

Rozdíly v tabulkové podobě:

S.No Rozdíly v Soubor Seznam
1. Vložení objednávky Uchovává pořadí vkládání. První položka zůstane na prvním místě a tak dále bez ohledu na její hodnotu. Nikdy nezachovává objednávku vložení.
2. Metody Používá metody jako add (), clear (), contains (), isEmpty (), remove () a size (). Používá metody jako add (), addAll (), get (), lastIndexOf (), ListIterator () s parametry nebo bez nich, remove (), set () a subList ().
3. Duplikáty Nikdy to neumožňuje duplikáty a v případě takových vystoupení se hodnota přepsá. Umožňuje duplikáty.
4. Nulové hodnoty Může mít maximálně jednu nulovou hodnotu. Může mít libovolný počet nulových hodnot.
5. Použití Iterator () a listIterator () Používá pouze metodu iterator (). Používá jak iterator (), tak seznamIterator ().
6. Přítomnost starší třídy Neexistuje žádná třída Legacy. Má jako třídu Legacy nazvanou vektor.
7. Implementace Několik implementací rozhraní Set jsou HashSet, LinkedHashSet a Tree Set. Několik implementací rozhraní List je LinkedList a ArrayList.

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