Különbség a tömblista és a kapcsolt lista között
Mielőtt belemerülnénk a tényleges különbségekbe, megismerhetjük, mi azok valójában?
A matematikában a Set fogalmával találkoztunk, és a Set itt többé-kevésbé ugyanazt jelenti. Igen, ez egy elemgyűjtemény, és a legtöbb esetben hasonló elemek gyűjteménye. Megpróbálhatja ezeket az elemeket hozzáadni a készlethez, és megkísérelheti a nyomtatást, hogy megértse, hogyan tárolják azokat.
Bemenet egy készletbe: 20, 50, 10, 30.
Valójában egy Set as fájlban tárolja 10, 20, 30, 50.
Az elemek itt vannak rendezve, és nem a beillesztési sorrendben vannak tárolva. Ez a Set egyik jellemzője, hogy tárolás előtt mindig rendezi az elemeket, és természetesen vannak kivételek is, és az egyik ilyen a LinkedhashSet, mivel fenntartja az elemek beillesztési sorrendjét..
Számítógépes szempontból a készlet néhány további tulajdonságot tartalmaz, például a módszereket és az öröklést. A módszerek éppen olyanok, mint a funkciók, és bizonyos feladatokat hajtanak végre, például hozzáadnak, eltávolítanak vagy iterálnak az elemek halmazán keresztül. Legtöbbünk közismert az öröklés kifejezésről, és itt ugyanazt jelenti. Igen, egy módszert örökölhetünk annak gyűjteményéből, hogy az a Set Interfészen használható legyen. Újból egy új kifejezésről, azaz a Set Interfészről beszélünk, és ez nem más, mint az elemek összessége, beleértve a Methods.
Csak a jobb megértés érdekében egy szettet képviseltünk. Az alábbi szintaxistól meg lehet határozni a különféle halmaztípusokat, például a HashSet és a TreeSet.
import java.util. *;
nyilvános osztály Setexample
nyilvános statikus void main (karakterláncok [])
int szám [] = 34, 22,10,60,30,22 25, 17, 76, 12, 88, 57;
Set set = new HashSet ();
próbáld ki
for (int i = 0; i < 5; i++)
set.add (számolni [i]);
System.out.println (set);
TreeSet sortedSeteg = új TreeSet (készlet);
System.out.println (“Itt van a rendezett kimenet:”);
System.out.println (sortedSeteg);
System.out.println („Nézd meg az első elemet:“ + (egész szám) sortedSet.first ());
System.out.println (“Nézd meg az utolsó elemet:“ + (egész szám) sortedSet.last ());
fogás (e kivétel)
A fenti kód kimenete a következő.
[25, 17, 76, 12, 88]
Itt van a rendezett kimenet:
[12, 17, 25, 76, 88]
Nézze meg az első elemet: 12
Nézd meg az utolsó elemet: 88
A Lista kiterjeszti a Gyűjteményt, hasonlóan ahhoz, mint egy készlet, de fenntartja a beszúrási sorrendet. Megpróbálja hozzáadni a következő neveket egy listához, és megnézheti, hogyan kerül hozzá.
A lista bemenete: John, Nancy, Mary, Alice.
Hogyan tárolja a listában: John, Nancy, Mary, Alice.
Csak vegye figyelembe a behelyezés sorrendjét. Megállapítható, hogy a 'John' az első elem mind a bemeneten, mind a kimeneten, és ugyanazt a sorrendet követi, ahogyan a neveket beszúrják. Még azt is tekinthetjük, hogy ez a Lista egyik fő tulajdonsága.
Nézzünk néhányat a Lista módszereiről, például az ArrayList és a LinkedList az alábbi szintaxisban.
import java.util. *;
nyilvános osztály Gyűjteménymintanyilvános statikus void main (karakterlánc [] args)
A1 lista = új ArrayList ();
a1.add ( „John”);
a1.add ( „Nancy”);
a1.add ( „Mária”);
a1.add ( „Alice”);
System.out.println („ArrayList Elements are”);
System.out.print (“\ t” + a1);L1. Lista = új LinkedList ();
l1.add ( „Silvia”);
l1.add ( „Arjun”);
l1.add ( „Deepika”);
l1.add ( „Susan”);
System.out.println ();
System.out.println („LinkedList Elements are”);
System.out.print (“\ t” + l1);
A fenti szintaxis kimenete a következő.
Az ArrayList elemek vannak
[John, Nancy, Mary, Alice]
LinkedList Elements
[Silvia, Arjun, Deepika, Susan]
A fenti kódból nagyon egyértelmű, hogy mind az ArrayList, mind a LinkedList fenntartja a beszúrási sorrendet.
A halmaznak és a listának megvannak a maga módszerei, és néhányat nézzünk meg itt.
S.No | Készlet - módszerek | Lista - módszerek |
1. | add () - Objektumok hozzáadása a gyűjteményhez. | void add (int index, Object obj) - Hozzáadja az „obj” objektumot a meghívó lista megadott „indexéhez”, és gondoskodik arról, hogy az előző elemek elmozgatásával ne kerüljön felül elem. |
2. | egyértelmű() - Objektumok eltávolítása a gyűjteményből. | logikai addAll (int index, c gyűjtemény) - A teljes „c” gyűjteményt hozzáadja a meghívó listához és a megadott „indexhez”. Biztosítja azt is, hogy egyetlen elem sem kerül felülírásra. Azt is ellenőrizhetjük működésének helyességét, hogy megvizsgáljuk a visszatérési értéket. Visszaadja az „igaz” értéket, ha a változtatás egyébként sikeres, a „hamis” értéket adja vissza. |
3. | tartalmaz () - Ellenőrizni kell, hogy a készlet tartalmaz-e egy bizonyos objektumot benne. Visszaadja az „igaz” értéket, ha az objektum jelen van a készletben. | Objektum beolvasása (int index) - Visszaadja az elemet vagy az objektumot a megadott 'indexnél'. |
4. | üres() - Annak meghatározása, hogy a gyűjtemény segít-e, mivel nincs benne elem. Ha az elem nincs, akkor az „igaz” értéket ad vissza. | int lastIndexOf (obj objektum) - Hasonlóan működik, mint a indexe() Eljárás. Visszaadja a megadott "obj" objektum utolsó előfordulását, és egy "1" értéket ad vissza, ha a listában nincs ilyen objektum. Ezért használható tartalmaz () A beállított interfész módszere. |
6. | remove () - Ennek célja egy elem eltávolítása a gyűjteményből, a paraméter megadásával a módszerhez. | ListIterator listIterator () - Visszatér egy iterátort a lista kezdő indexéhez. |
7. | méret() - Meg kell számolni a gyűjteményben lévő objektumok vagy elemek számát. | ListIterator listIterator (int index) - Ez elősegíti a meghívó lista áthaladását a megadott 'index' -től kezdve. |
8. | - | Objektum eltávolítása (int index) - Törli az objektumot a megadott 'indexen', és eredményként adja vissza a törölt elemet. Ezenkívül csökkenti a kapott listaindexeket, hogy tükrözze a törlést. |
9. | - | Objektumkészlet (int index, Object obj) - Az obj objektumot hozzá kell rendelni a meghívó listához a megadott 'index' alatt. |
10. | - | Allista felsorolása (int kezdés, int vég) - Az objektumokat fel kell venni az „indulástól” az „vég” indexéig a listát, amely meghívta a módszert. |
A készlet soha nem tartja be az elemek sorrendjét, ahogyan beillesztik őket, míg a lista fenntartja azt. Kivételt képez ez a szabály a LinkedHashSet esetében, mivel az fenntartja a beillesztés sorrendjét, de a másik készlet, például a HashSet és a TreeSet tárolja az elemeket. Ugyanezt írjuk le az alábbi példákkal.
Készlet Bemenet: macska, baba, alma.
Tárolva: Apple, Cat, Doll.
Listabevitel: macska, baba, alma.
Tárolva: macska, baba, alma.
A készlet soha nem engedélyezi a másolatokat, míg a listák megengedik. Ha egy másolatot hozzá kell adni egy listához, akkor az felülíródik. Nézze meg a mintákat a Set és a listák példányaihoz.
Beállított bemenet: 10, 20, 20, 50.
Tárolva: 10, 20, 50.
Lista bevitel: 10, 20, 20, 50.
Tárolva: 10, 20, 20, 50.
A halmaznak csak egy null értéke lehet, míg a listának egynél több null értéke is lehet, és egyetlen számra nem korlátozódik.
Beállított érték: null, null, ember, kutya, repülő.
Tárolva: null, kutya, ember, repülőgép.
Lista bevitel: null, null, ember, kutya, repülő.
Tárolva: null, null, ember, kutya, repülő.
Az Iterator módszer jól működik mind a Set, mind pedig a List esetén, míg a ListIterator módszer csak a Lista esetén működik. A ListIterator felhasználható a listán való előre- és hátrafelé történő mozgatáshoz.
A halmaznak nincs öröklési osztálya, míg a Lista interfésznek van öröksége, amelyet 'vektornak' hívnak. Egy vektor a Lista felületet használja, ezért fenntartja a beszúrási sorrendet. A szinkronizálási erőfeszítések miatt a vektor-kiegészítések, törlések és frissítések teljesítménye kissé lassabb.
A Set megvalósítások közül kevés a HashSet, a LinkedHashSet és a TreeSet. A Lista megvalósításai közül néhányat tartalmaz az ArrayList és a LinkedList.
A Set és a lista használata tisztán a beszúrási sorrend fenntartásának követelményétől függ. Mint megtudtuk, hogy a készlet soha nem tartja be a beszúrási sorrendet, akkor használható, ha a sorrend kevésbé fontos. Hasonló módon használja a Lista lehetőséget, ha meg kell tartania a beillesztés sorrendjét is.
S.No | Különbségek | Készlet | Lista |
1. | Beszúrási sorrend | Fenntartja a beillesztési sorrendet. Az első behelyezett elem első helyen marad, és így tovább, függetlenül annak értékétől. | Soha nem tartja be a beszúrási sorrendet. |
2. | Mód | Olyan módszereket használ, mint az add (), a clear (), tartalmazza (), isEmpty (), remove () és size (). | Olyan módszereket használ, mint az add (), addAll (), get (), lastIndexOf (), ListIterator () paraméterrel vagy anélkül, remove (), set () és subList (). |
3. | ismétlődések | Soha nem engedélyezi a másolatokat, és ilyen megjelenések esetén az érték felülíródik. | Ez lehetővé teszi másolatok készítését. |
4. | Null értékek | Legfeljebb egyetlen nulla értéke lehet. | Tetszőleges számú null értéke lehet. |
5. | Az Iterator () és a listIterator () használata | Csak az iterator metódust használja (). | Mind az iterátort (), mind a listIterator () -ot használja.. |
6. | A Legacy osztály jelenléte | Nincs Legacy osztály. | Ennek Legacy osztálya van, mint vektor. |
7. | megvalósítások | A Set felület megvalósításának kevés a HashSet, LinkedHashSet és a Tree Set. | A lista interfész kevés megvalósítása a LinkedList és az ArrayList. |
Remélem, minden lehetséges különbséget felvetünk a készlet és a lista között. Ha úgy érzi, hogy hiányzott valamit, kérjük, ossza meg velünk.