Különbség a Set és a List A különbség

Anonim

Differenciálás a gyűjteménylista és a hivatkozott lista között. Mielőtt bejutnánk a tényleges különbségekbe, derítsük ki, mi is valójában?

Mi az a Set?

Találkoztunk a matematika-készlet fogalmával, és a Set itt többé-kevésbé ugyanazt jelenti. Igen, ez elemek gyűjteménye, és a legtöbb esetben hasonló elemek gyűjteménye. Megpróbálhatja hozzáadni ezeket az elemeket egy készlethez, és megpróbálja kinyomtatni a nyomtatást annak megértéséhez, hogy valójában hogyan tárolják.

20, 50, 10, 30.

Valójában a Set as 10, 20, 30, 50.

Az elemek itt vannak rendezve, és nem a beillesztési sorrendben tárolódnak. Ez a Set egyik jellemzője, hogy mindig tárolja az elemeket, és természetesen van kivétel, és az egyik ilyen a LinkedhashSet, mivel fenntartja az elemek beillesztési sorrendjét.

Számítógépes értelemben a Set néhány további tulajdonságot tartalmaz, mint a Methods and Inheritance. A módszerek ugyanúgy működnek, mint bizonyos feladatok, például az elemek készítésével, eltávolításával vagy iterálásával. A legtöbben közismertek az öröklés fogalmából, és itt is ugyanazt jelenti. Igen, örökölhetünk egy módszert a gyűjteményéből, hogy a Set Interface-tel használható. Ismét új, i. e. a Set Interface, és ez nem más, mint az elemek egésze, beleértve a Módszert.

Hogyan kell megvalósítani?

Csak a jobb megértés érdekében egy szettet képviseltünk a szintaxissal. Az alábbi szintaxis alapján meg lehet különböztetni a különböző típusú készleteket, például a HashSet és a TreeSet.

import java. util. *;

nyilvános osztály Setexample {

nyilvános statikus érvénytelen fő (String args []) {

int szám [] = {34, 22, 10, 60, 30, 22} {25, 17, 76,, 88, 57};

Set set = új HashSet ();

próbálja {

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

beállítást. adjunk hozzá (számolni [i]);

}

System. ki. println (set);

TreeSet sortedSeteg = új TreeSet (set);

Rendszer. ki. println ("Itt van a rendezett kimenet:");

Rendszer. ki. println (sortedSeteg);

Rendszer. ki. println ("Nézze meg az első elemet:" + (Integer) sortedSet first ());

Rendszer. ki. println ("Nézd meg az utolsó elemet:" + (Integer) sortedSet last ());

}

fogás (kivétel e) {}

}

}

A fenti kód kimenete a következő.

[25, 17, 76, 12, 88]

Itt van a rendezett kimenet:

[12, 17, 25, 76, 88]

> Nézd meg az utolsó elemet: 88

Mi a lista?

A lista kiterjeszti a gyűjteményt, hasonlóan a készlethez, de fenntartja a beszúrási sorrendet. Megpróbálja hozzáadni a következő neveket egy listához, és megtekintheti, hogy miként kerül hozzáadásra.

A bevitel egy listához:

John, Nancy, Mary, Alice.

Hogyan tárolja a listát:

John, Nancy, Mary, Alice. Érdemes észrevenni a behelyezés sorrendjét. Megállapíthatja, hogy a "John" a bemenet és a kimenet első eleme, és ugyanaz a sorrend, amelyben a nevek be vannak illesztve, követi. Ezt a List legfontosabb tulajdonságait is figyelembe lehet venni.

Hogyan kell megvalósítani? Nézzünk néhány olyan módszert, mint az ArrayList és a LinkedList az alábbi szintaxisban.

import java. util. *;

public class Collection {{999} nyilvános statikus void main (String [] args) {

Lista a1 = új ArrayList ();

a1. add („John”);

a1. add („Nancy”);

a1. add („Mária”);

a1. add („Alice”);

Rendszer. ki. println ("ArrayList elemek");

Rendszer. ki. nyomtatás (" t" + a1);

Lista l1 = új LinkedList ();

l1. add („Silvia”);

l1. add („Arjun”);

l1. add („Deepika”);

l1. add („Susan”);

Rendszer. ki. println ();

Rendszer. ki. println ("LinkedList elemek");

Rendszer. ki. nyomtatás (" t" + l1); }}

A fenti szintaxis kimenete a következő.

Az ArrayList Elemek

[John, Nancy, Mary, Alice]

LinkedList Elemek

[Silvia, Arjun, Deepika, Susan]

és a LinkedList fenntartja a beillesztési sorrendet.

Hogyan különböznek?

Módszerek és leírások:

A Set és a Listnak saját módszerei vannak, és nézzünk rájuk néhányat.

S. Nem

Beállítás - Módszerek

  • Lista - Módszerek

1.

add () - Objektumok hozzáadása a gyűjteménybe. void add (int index, Objektum obj) -
Az objektum "obj" hozzáadásával a meghívó lista megadott "indexjéhez", és biztosítja, hogy az előző elemek áthelyezésével egyetlen elem sem kerül felülírásra. 2. clear () - Az objektumok eltávolítása egy gyűjteményből. logikai addAll (int index, gyűjtemény c) -
Hozzáadja a teljes "c" gyűjteményt a meghívó listához és a megadott indexhez. Azt is biztosítja, hogy egyetlen elem sem kerül felülírásra. A visszatérési érték megvizsgálásával ellenőrizhetjük működésének helyességét is. Visszatér "igaznak", ha a változás egyébként sikeres, akkor egy "hamis" értéket ad vissza. 3. contains () - Ellenőrizni kell, hogy a Set tartalmaz-e egy bizonyos objektumot. A "true" értéket adja vissza, ha az objektum jelen van a Set-ben. Objektum get (int index) -
Visszaküldi az elemet vagy objektumot a megadott "indexben". 4. isEmpty () - Meg kell határoznia, hogy a gyűjtemény nem tartalmaz-e elemeket. Az értéket "igaznak" adja vissza, ha nincs elem. int lastIndexOf (Object obj) -
Ez a indexOf () módszer fordítottja. Visszaküldi az objektum "obj" objektum utolsó előfordulását, és az "1" értéket visszaadja, ha nincs ilyen objektum a listában. Ezért a contains () Set Interface módja is használható. 6. remove () - Egy elem eltávolítása egy gyűjteményből a metódus paraméterének megadásával. ListIterator listIterator () -
Egy iterátort visz vissza a lista kezdő indexébe. 7. size () - Számolni kell a gyűjtemény objektumainak vagy elemeinek számát. ListIterator listIterator (int index) -
Segít az iterációban az invokálási listán keresztül, a megadott "index" -től kezdődően. 8. - Objektum eltávolítása (int index) - Törli az objektumot a megadott "indexben", és ennek eredményeként a törölt elemet visszaküldi. Ugyancsak csökkenti az eredményül kapott listaindexeket, amelyek tükrözik a törlést.
9. - Objektum készlet (int index, Object obj) - Az objektum "obj" hozzárendelése a megadott indexhez.
10. - Lista subList (int start, int end) - Az objektumokat az index "start" -ból az index "end" -be kell beillesztenie a listába.
REPLACEion Order maintenance: A Set nem tartja meg azon elemek sorrendjét, amelyekbe beillesztik, míg a lista fenntartja azt. A LinkedHashSet esetében ez a szabály kivételt képez, mivel megtartja a beillesztési sorrendet, de a másik Set, például a HashSet és a TreeSet az elemeket az elmentés előtt rendezi. Ugyanezt ismertetjük az alábbi példákkal. Set Bemenet: Macska, Doll, Apple.
  • Az alábbiakat tárolja: Apple, Cat, Doll.

Lista bevitele: Macska, Doll, Apple. A következőket tárolja: Macska, Doll, Apple.

Duplikátumok jelenléte:

A Set nem engedélyezi a másolatokat, míg a lista lehetővé teszi. Ha a listához dupla értéket kell hozzáadni, akkor felülíródik. Nézze meg a mintákat a Set and List duplikátumokhoz.

A bemenet beállítása: 10, 20, 20, 50.

Tárolt: 10, 20, 50.

  • Lista bemenet: 10, 20, 20, 50.

20, 50.

Null értékek:

A készletnek csak egy null értéke lehet, míg a lista több null értéket is tartalmazhat, és nem korlátozódik semmilyen számra.

Input beállítás: null, null, Man, Dog, Plane.

Tárolt: null, Dog, Man, Plane.

  • Lista bemenet: null, null, Man, Dog, Plane.

Tárolt: null, null, Man, Dog, Plane.

Iterator & ListIterator használata:

Az Iterator módszer jól működik mind a Set, mind a List, míg a Method List1terator csak a List segítségével működik. A ListIterator segítségével előre és visszafelé haladhat a listán.

A Legacy Class jelenléte:

A Set nem rendelkezik régi osztályral, míg a List interfész öröksége a "vektor". A vektor a List interfészt használja, és így fenntartja a beszúrási sorrendet. A szinkronizálási erőfeszítések miatt a vektor teljesítménye a kiegészítésekben, törlésekben és frissítésekben lassabb.

  • Megvalósítások:

A telepített megvalósítások közül kevés a HashSet, LinkedHashSet és a TreeSet. A List implementációk közül csak kevés szerepel az ArrayList és a LinkedList.

  • Mikor kell használni a Set & Listt?

A Set és a lista használata tisztán függ a beillesztési megbízás karbantartásának követelményétől.Amint megtudtuk, hogy egy Set soha nem tartja be a beszúrási sorrendet, akkor használható, ha a megrendelés kevésbé fontos. Hasonló módon használja a listát, amikor a beillesztés sorrendjét is meg kell őriznie.

  • Különbségek táblázatos formában:

S. Nem

Különbségek

Beállítás

Lista

1. Beillesztési sorrend Megtartja a beillesztési sorrendet. Az első beillesztés az első helyen és így tovább, függetlenül annak értékétől. Soha nem tartja be a beillesztési sorrendet.
2. Módszerek Olyan módszereket használ, mint a add (), clear (), contains (), az isEmpty (), remove () és a size (). Olyan módszereket használ, mint a add (), addAll (), get (), lastIndexOf (), a ListIterator () vagy paraméter nélkül, remove (), set () és subList ().
3. Duplikátumok Soha nem engedélyezi a másolatokat, és ilyen megjelenések esetén az érték felülíródik. Lehetővé teszi a másolatokat.
4. Null érték Legfeljebb egy null érték lehet. Számos null érték lehet.
5. Az Iterator () & listIterator () használata Csak a metódus iterator () parancsát használja. Mind az iterator (), mind a listIterator () kifejezést használja.
6. Legacy osztály jelenléte Nincs Legacy osztály. Van olyan Legacy osztály, mint vektor.
7. Implementations A Set interfész megvalósítások közül kevés a HashSet, a LinkedHashSet és a Tree Set. A List interfész-implementációk közül csak kevés szerepel LinkedList és ArrayList.
Remélem, bevezettük a Set és a List között minden lehetséges különbséget. Ha úgy érzed, hogy hiányzott valami, kérjük, közölje velünk.