Erinevus komplekti ja loendi vahel

Massiiviloendi ja lingitud loendi erinevus

Enne tegelike erinevustega tutvumist uurige, millised need tegelikult on?

Mis on komplekt?

Oleme matemaatikas kohanud komplekti mõistet ja siin esitatud komplekt tähendab enam-vähem sama. Jah, see on elementide kogum ja enamikul juhtudel sarnaste elementide kogum. Võite proovida lisada need elemendid komplekti ja proovida printida, et mõista, kuidas seda tegelikult hoitakse.

Sisend komplekti: 20, 50, 10, 30.

See on tegelikult salvestatud komplekti nimega 10, 20, 30, 50.

Elemendid on siin järjestatud ja neid ei salvestata sisestamise järjekorras. See on üks komplekti omadustest, et see sorteerib elemendid enne salvestamist alati üles ja muidugi on sellest ka erandeid ning üks selline on LinkedhashSet, kuna see säilitab elementide sisestamise järjekorra.

Arvuti osas sisaldab komplekt vähe lisaomadusi, näiteks meetodid ja pärimine. Meetodid on täpselt nagu funktsioonid ja nad täidavad teatud ülesandeid, näiteks elementide kogumi lisamine, eemaldamine või iteratsioon. Enamik meist on tuntud pärandi mõiste all ja see tähendab siin sama. Jah, me võime selle kogust meetodi pärida, nii et seda saaks kasutada koos seadistusliidesega. Jällegi räägime uuest terminist, st komplekti liidesest, ja see pole midagi muud kui elementide kogum, sealhulgas meetodid.

Kuidas seda rakendada?

Lihtsalt paremaks mõistmiseks oleme esindanud komplekti koos selle süntaksiga. Allpool olevast süntaksist saate teada erinevaid komplekti tüüpe, näiteks HashSet ja TreeSet.

import java.util. *;

avalik klass Setex

avalik staatiline tühine pea (keelpillid [])

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

Komplekti komplekt = uus HashSet ();

proovige

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

set.add (loendus [i]);

System.out.println (komplekt);

TreeSet sortedSeteg = uus TreeSet (komplekt);

System.out.println (“Siin on meil sorteeritud väljund:”);

System.out.println (sortedSeteg);

System.out.println (“Vaata esimest elementi:“ + (täisarv) sortedSet.first ());

System.out.println (“Vaata viimast elementi:“ + (täisarv) sortedSet.last ());

saak (erand e)

Ülaltoodud koodi väljund on järgmine.

[25, 17, 76, 12, 88]
Siin on sorteeritud väljund:
[12, 17, 25, 76, 88]
Vaadake esimest elementi: 12
Vaata viimast elementi: 88

Mis on nimekiri?

Loend laiendab kollektsiooni sarnaselt sellega, nagu komplekt tegi, kuid see säilitab sisestamise järjekorra. Proovite lisada loendisse järgmised nimed ja vaadake, kuidas seda loendisse lisatakse.

Sisend loendisse: John, Nancy, Mary, Alice.

Kuidas seda loendis hoitakse: John, Nancy, Mary, Alice.

Lihtsalt pange tähele nende sisestamise järjekorda. Saate tuvastada, et 'John' on nii sisendis kui ka väljundis esimene element ja sellele järgneb samas järjekorras, milles nimed sisestatakse. Võime seda isegi nimekirja üheks peamiseks omaduseks pidada.

Kuidas seda rakendada?

Vaatleme allpool toodud süntaksis mõnda loendi meetodit, näiteks ArrayList ja LinkedList.

import java.util. *;
avaliku klassi kollektsiooni näidis

avalik staatiline tühine pea (string [] args)

Loend a1 = uus ArrayList ();
a1.add (“Johannes”);
a1.add (“Nancy”);
a1.add (“Maarja”);
a1.add (“Alice”);
System.out.println (“ArrayList Elements are”);
System.out.print (“\ t” + a1);

Loend l1 = uus LinkedList ();
l1.add (“Silvia”);
l1.add (“Arjun”);
l1.add (“Deepika”);
l1.add (“Susan”);
System.out.println ();
System.out.println (“LinkedList Elements is”);
System.out.print (“\ t” + l1);

Ülaltoodud süntaksi väljund on järgmine.

ArrayList elemendid on

[John, Nancy, Mary, Alice]

LinkedList elemendid

[Silvia, Arjun, Deepika, Susan]

Ülaltoodud koodist on väga selge, et nii ArrayList kui LinkedList säilitavad sisestusjärjekorra.

Kuidas nad erinevad?

  • Meetodid ja kirjeldused:

Komplektil ja loendil on oma meetodid ja vaatame neist siin mõnda.

S.Ei Komplekt - meetodid Loend - meetodid
1. lisama() - See on objektide lisamine kollektsiooni. tühine lisamine (int indeks, objekt obj) - See lisab kutsuva nimekirja täpsustatud indeksisse objekti "obj" ja tagab, et varasemate elementide nihutamisega ei kirjutata ühtegi elementi üle.
2. tühjenda () - See on objektide eemaldamine kollektsioonist. boolean addAll (int indeks, kogu c) - See lisab kogu kollektsiooni c kutsunimekirja ja täpsustatud indeksis. Samuti tagab see, et ühtegi elementi ei kirjutata üle. Selle toimimise õigsust saame kontrollida ka tagastusväärtuse uurimisega. Kui muudatus õnnestub, tagastab väärtus tõese, annab väärtuse vale.
3. sisaldab() - See peab kontrollima, kas komplekt sisaldab selles teatud objekti. See tagastab väärtuse true, kui objekt on komplektis. Objekti saamine (int indeks) - See tagastab elemendi või objekti määratud indeksis.
4. on tühi() - See peab kindlaks tegema, kas kollektsioon aitab, kuna selles pole elemente. Kui element puudub, tagastatakse väärtus tõene. int lastIndexOf (objekt obj) - See toimib sarnaselt indeks() Meetod. See tagastab määratud objekti 'obj' viimase esinemise ja väärtus '1' tagastatakse, kui sellist objekti loendis pole. Seetõttu saab seda kasutada ka kui sisaldab() Määratud liidese meetod.
6. eemalda () - See on elemendi eemaldamine kogust, määrates selle meetodi parameetriks. ListIterator listIterator () - See tagastab iteraatori loendi algusindeksi.
7. suurus () - Sellega loetakse kollektsioonis olevate objektide või elementide arv. ListIterator listIterator (sisemine register) - See aitab korrata kutsuva loendi kaudu täpsustatud indeksist alustades..
8. - Objekti eemaldamine (int indeks) - See kustutab objekti määratud indeksis ja tagastab kustutatud elemendi. Samuti vähendab see tulenevad loendiindeksid, et kajastada kustutamist.
9. - Objektide komplekt (int indeks, Object obj) - Objekti obj omistamine kutsutavale loendile määratud indeksis..
10. - Loend alamloendist (int algus, int lõpp) - Meetodi käivitanud loendisse tuleb lisada objektid indeksist “algus” kuni indeksini “lõpp”.
  • Sisestuskorralduse hooldus:

Komplekt ei säilita kunagi elementide järjekorda, millesse nad sinna sisestatakse, samas kui loend seda säilitab. LinkedHashSeti jaoks on sellest reeglist erand, kuna see säilitab sisestamise järjekorra, kuid teine ​​komplekt, näiteks HashSet ja TreeSet, sorteerib elemendid enne selle salvestamist. Sama on kirjeldatud allpool toodud näidetega.

Komplekt Sisend: kass, nukk, õun.

Salvestatud kui: õun, kass, nukk.

Loendi sisend: kass, nukk, õun.

Salvestatud kui: kass, nukk, õun.

  • Koopiate olemasolu:

Komplekt ei luba kunagi duplikaate, nimekiri aga lubab. Kui loendisse tuleb lisada duplikaadi väärtus, kirjutatakse see üle. Vaadake proovide komplekti ja loendi duplikaate.

Komplekti sisend: 10, 20, 20, 50.

Salvestatud: 10, 20, 50.

Loendi sisend: 10, 20, 20, 50.

Salvestatud: 10, 20, 20, 50.

  • Nullväärtused:

Komplektil võib olla ainult üks nullväärtus, samas kui loendil võib olla rohkem kui üks nullväärtus ja see pole piiratud ühegi arvuga.

Komplekti sisend: null, null, mees, koer, lennuk.

Salvestatud kui: null, koer, mees, lennuk.

Loendi sisend: null, null, mees, koer, lennuk.

Salvestatud kui null, null, mees, koer, lennuk.

  • Iteraatori ja loenditeraatori kasutamine:

Iteraatori meetod töötab hästi nii seadistamise kui ka loendi korral, samas kui meetod Iterirator töötab ainult loendiga. LoendIteraatorit saab kasutada nii loendi kaudu edasi-tagasi liikumiseks.

  • Legacy klassi olemasolu:

Komplektil puudub pärandiklass, samas kui loendiliidesel on pärand, mida nimetatakse vektoriks. Vektor kasutab loendiliidest ja säilitab seetõttu sisestamise järjekorra. Sünkroonimispüüdluste tõttu on vektorite lisamiste, kustutamiste ja värskenduste jõudlus pisut aeglasem.

  • Rakendamine:

Vähesed komplekti rakendustest on HashSet, LinkedHashSet ja TreeSet. Vähestest loendi rakendustest on ArrayList ja LinkedList.

Millal kasutada seadeid ja loendit??

Komplekti ja loendi kasutamine sõltub puhtalt sisestusjärjekorra hooldamise nõudest. Nagu oleme teada saanud, et komplekt ei säilita kunagi sisestamise järjekorda, saab seda kasutada siis, kui järjekord on väiksema tähtsusega. Sarnasel viisil kasutage loendit ka siis, kui peate säilitama ka sisestamise jada.

Erinevused tabelina:

S.Ei Erinevused Komplekt Loend
1. Sisestamisjärjekord See säilitab sisestamise järjekorra. Esimene sisestatud jääb kõigepealt kohale ja nii edasi, sõltumata selle väärtusest. See ei säilita kunagi sisestamise järjekorda.
2. Meetodid See kasutab selliseid meetodeid nagu lisa (), tühjenda (), sisaldab (), isEmpty (), eemalda () ja suurus (). See kasutab selliseid meetodeid nagu add (), addAll (), get (), lastIndexOf (), ListIterator () koos parameetriga või ilma, eemalda (), set () ja subList ().
3. Koopiad See ei luba kunagi duplikaate ja selliste esinemiste korral kirjutatakse väärtus üle. See võimaldab duplikaate.
4. Nullväärtused Sellel võib olla maksimaalselt üks nullväärtus. Sellel võib olla suvaline arv nullväärtusi.
5. Iteraatori () ja loendiIteraatori () kasutamine See kasutab ainult meetodi iteraatorit (). See kasutab nii iteraatorit () kui ka listIteratori ().
6. Pärandiklassi olemasolu Legacy klassi pole. Sellel on Legacy klass, mida nimetatakse vektoriks.
7. Rakendamine Vähesed komplekti liidese rakendused on HashSet, LinkedHashSet ja Tree Set. Vähesed loendi liidese rakendustest on LinkedList ja ArrayList.

Loodetavasti oleme lisanud kõik võimalikud erinevused komplekti ja loendi vahel. Kui tunnete, et oleme millestki ilma jäänud, palun andke meile sellest teada.