Aseta ja luettelo

Anonim

Array-luettelon ja linkitetun luettelon välinen ero

Ennen kuin pääsemme todellisiin eroja, saamme tietää, mitä he todella ovat?

Mikä on Set?

Olemme kohdanneet Setin matematiikan käsitteen ja Set tässä enemmän tai vähemmän tarkoittaa samaa. Kyllä, se on kokoelma elementtejä ja useimmissa tapauksissa kokoelma samanlaisia ​​elementtejä. Voit yrittää lisätä nämä elementit Setiin ja yrittää tulostaa ymmärtääksesi, miten se on todella tallennettu.

Syöttäminen sarjaan: 20, 50, 10, 30.

Se on tallennettu Set as: iin 10, 20, 30, 50.

Elementit lajitellaan täällä ja niitä ei tallenneta niiden syöttöjärjestykseen. Tämä on yksi Setin ominaisuuksista, että se lajittelee aina elementit ennen tallennusta ja tietysti on olemassa poikkeuksia, ja yksi tällainen on LinkedhashSet, koska se ylläpitää elementtien lisäysjärjestystä.

Tietokoneen termeissä Set sisältää muutamia lisäominaisuuksia, kuten menetelmiä ja perintötekijöitä. Menetelmät ovat samoja funktioita ja ne tekevät tiettyjä tehtäviä, kuten lisäys, poistaminen tai iteroituminen elementtien joukon kautta. Useimmat meistä ovat hyvin tunnettuja termistä "perintö" ja se tarkoittaa samaa täällä. Kyllä, voimme periä menetelmän sen kokoelmasta, jotta sitä voidaan käyttää Set Interfacein kanssa. Jälleen puhumme uudesta termistä eli Set Interfaceista, eikä se ole mikään muu kuin koko joukko elementtejä, kuten menetelmät.

Miten se toteutetaan?

Vain parempaa ymmärrystä varten olemme edustaneet joukkoa sen syntaksilla. Alla olevasta syntaksista voit tunnistaa erilaiset Set-tyypit, kuten HashSet ja TreeSet.

tuonti java.util. *;

julkinen luokka Setexample {

julkinen staattinen void main (String args []) {

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

Sarja set = uusi HashSet();

yrittää {

sillä (int i = 0; i <5; i ++) {

set.add (count [i]);

}

System.out.println (set);

TreeSet sortedSeteg = uusi TreeSet(sarja);

System.out.println ("Tässä meillä on lajiteltu tuotos:");

System.out.println (sortedSeteg);

System.out.println ("Katso ensimmäinen elementti:" + (kokonaisluku) sortedSet.first ());

System.out.println ("Katso viimeinen elementti:" + (kokonaisluku) sortedSet.last ());

}

saalis (Poikkeus e) {}

}

}

Edellä olevan koodin tuotos on seuraava.

[25, 17, 76, 12, 88] Tässä meillä on lajiteltu tuotos: [12, 17, 25, 76, 88] Katso ensimmäinen osa: 12 Katso viimeinen osa: 88

Mikä on luettelo?

Luettelo laajentaa Kokoelman kokoa vastaavan kokoelman, mutta se säilyttää lisäysjärjestyksen. Yrität lisätä luetteloon seuraavat nimet ja katsoa, ​​miten siihen lisätään.

Listan syöte: John, Nancy, Mary, Alice.

Kuinka se on tallennettu luetteloon: John, Nancy, Mary, Alice.

Huomaa vain, missä järjestyksessä ne on asetettu. Voit tunnistaa, että "John" on tulojen ja tuotosten ensimmäinen osa ja sitä seuraa sama järjestys, jossa nimet lisätään. Voimme jopa harkita tätä yksi Listin tärkeimmistä ominaisuuksista.

Miten se toteutetaan?

Tarkastelemme joitain Listan menetelmiä, kuten ArrayList ja LinkedList, alla olevassa syntaksissa.

tuonti java.util. *; julkisen luokan kokoelmaesimerkki {

julkinen staattinen void main (String [] args) {

Luettelo a1 = uusi ArrayList (); a1.add (”John”); a1.add (”Nancy”); a1.add (”Maria”); a1.add (”Alice”); System.out.println ("ArrayList Elements are"); System.out.print (" t" + a1);

Luettelo l1 = uusi 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); }}

Edellä olevan syntaksin tuotos on seuraava.

ArrayList-elementit ovat

[John, Nancy, Mary, Alice]

LinkedList-elementit

[Silvia, Arjun, Deepika, Susan]

Edellä olevasta koodista on hyvin selvää, että sekä ArrayList että LinkedList ylläpitävät lisäysjärjestystä.

Miten he eroavat?

  • Menetelmät ja kuvaukset:

Setillä ja luettelolla on omat menetelmät ja katsokaamme muutamia niistä täällä.

S.No Aseta - Menetelmät Luettelo - Menetelmät
1. lisätä() - On lisätä objekteja kokoelmaan. void add (int-indeksi, Object obj) - Se lisää objekti "obj" kutsutun luettelon "indeksiin" ja varmistaa, että mitään elementtiä ei korvata siirtämällä aiempia elementtejä.
2. asia selvä() - Se on poistaa esineitä kokoelmasta. boolean addAll (int-indeksi, kokoelma c) - Se lisää koko kokoelman "c" kutsuvaan luetteloon ja määritettyyn "indeksiin". Se varmistaa myös, että mitään elementtejä ei korvata. Voimme myös tarkistaa sen toiminnan oikeellisuuden tarkastelemalla tuottoarvoa. Se palauttaa "true", jos muutos onnistuu muulla tavalla, se palauttaa arvon "väärä".
3. sisältää() - On tarkistettava, onko Set sisältää tietyn objektin siinä. Se palauttaa arvon "true", jos kohde on Setissa. Object get (int-indeksi) - Se palauttaa elementin tai objektin määritetyllä "indeksillä".
4. on tyhjä() - On selvitettävä, keräily ei ole mikään elementti siinä. Se palauttaa arvon "true", jos elementtiä ei ole. int lastIndexOf (Object obj) - Se toimii samanlaisena kuin sisällysluettelo() Menetelmä. Se palauttaa määritetyn objektin "obj" viimeisen esiintymisen ja arvon "1" palautetaan, jos luettelossa ei ole tällaista kohdetta. Siksi sitä voidaan käyttää myös nimellä sisältää() Aseta liityntätapa.
6. poistaa() - On poistaa elementti kokoelmasta määrittämällä se parametriksi menetelmään. ListIterator listIterator () - Se palauttaa iteraattorin luettelon aloitusindeksiin.
7. koko() - Se on laskea esineiden tai elementtien määrä, jonka kokoelmassa on. ListIterator listIterator (int-indeksi) - Se auttaa iteroitumaan kutsutun luettelon kautta, joka alkaa määritetystä "indeksistä".
8. Objektin poisto (int-indeksi) - Se poistaa kohteen määritetyllä "indeksillä" ja palauttaa poistetun elementin tuloksena. Se myös pienentää tuloksena olevia listaindeksejä, jotka heijastavat poistoa.
9. Objektisarja (int-indeksi, Object obj) - Se on määritettävä objektille "obj" kutsuttuun luetteloon määritetyllä "indeksillä".
10. List subList (int alku, int loppu) - Sen on sisällytettävä kohteet indeksistä "aloittaa" sen luettelon "päähän", joka on käyttänyt menetelmää.
  • Lisäysjärjestyksen ylläpito:

Set ei koskaan ylläpitä niiden elementtien järjestystä, joihin ne on lisätty, kun taas luettelo pitää sitä yllä. LinkedHashSetille on poikkeus, koska se ylläpitää lisäysjärjestystä, mutta toinen Set kuten HashSet ja TreeSet lajittelee elementit ennen sen tallentamista. Samaa kuvataan alla olevilla esimerkeillä.

Sarja Syöt: Cat, Doll, Apple.

Tallennetaan nimellä: Apple, Cat, Doll.

List Input: Cat, Doll, Apple.

Säilytetty nimellä: Cat, Doll, Apple.

  • Duplikaattien olemassaolo:

Set ei salli päällekkäisyyksiä, kun taas lista sallii sen. Jos kaksoiskappalearvo on lisättävä luetteloon, se korvataan. Katso settien ja listan kopioiden näytteet.

Aseta tulo: 10, 20, 20, 50.

Tallennetaan seuraavasti: 10, 20, 50.

List Input: 10, 20, 20, 50.

Tallennetaan seuraavasti: 10, 20, 20, 50.

  • Null-arvot:

Setillä voi olla vain yksi nollaarvo, kun taas luettelossa voi olla enemmän kuin yksi nollaarvo eikä se ole rajoitettu mihinkään numeroon.

Aseta syöttö: nolla, nolla, mies, koira, taso.

Säilytetty: null, koira, mies, taso.

List Input: null, null, mies, koira, taso.

Säilytetään: null, null, mies, koira, taso.

  • Iterator & ListIteratorin käyttö:

Iterator-menetelmä toimii hyvin sekä Setin että Listin kanssa, kun taas menetelmä ListIterator toimii vain luettelossa. ListIteratoria voidaan käyttää eteenpäin ja taaksepäin luettelon kautta.

  • Legacy Classin olemassaolo:

Setillä ei ole vanhoja luokkia, kun taas List-rajapinnalla on vanha nimitys "vektoriksi". Vektori käyttää List-käyttöliittymää ja sen vuoksi se pitää yllä järjestyksen lisäämisen. Synkronointitoimien ansiosta vektorin suorituskyky lisäyksissä, poistoissa ja päivityksissä on hitaampaa.

  • toteutuksissa:

Harva asennus toteutuksista on HashSet, LinkedHashSet ja TreeSet.Harva listan toteutuksista sisältää ArrayList ja LinkedList.

Milloin Set & Listia käytetään?

Setin ja luettelon käyttö on täysin riippuvainen lisäysjärjestyksen ylläpitämisestä. Kuten olemme oppineet, että Set ei koskaan ylläpitä työn järjestystä, sitä voidaan käyttää, kun tilaus on vähemmän tärkeä. Käytä samalla tavalla luetteloa, kun haluat ylläpitää myös lisäysjaksoa.

Erot taulukkomuodossa:

S.No Erot Sarja Lista
1. Lisäysjärjestys Se ylläpitää lisäysjärjestystä. Ensimmäinen sijoitettu on ensimmäiseksi ja niin edelleen riippumatta sen arvosta. Se ei koskaan säilytä lisäysjärjestystä.
2. menetelmät Se käyttää menetelmiä, kuten add (), clear (), contains (), isEmpty (), remove () ja size (). Se käyttää menetelmiä kuten add (), addAll (), get (), lastIndexOf (), ListIterator () tai ilman parametria, remove (), set () ja subList ().
3. Kopiot Se ei koskaan salli kaksoiskappaleita ja tällaisten esiintymien tapauksessa arvo korvataan. Se mahdollistaa kaksoiskappaleet.
4. Nolla-arvot Sillä voi olla vain yksi nollaarvo maksimissaan. Se voi olla mikä tahansa nolla-arvo.
5. Iteratorin () ja listIteratorin () käyttö Se käyttää vain menetelmän iteraattoria (). Se käyttää sekä iteraattoria () että listIterator ().
6. Legacy-luokan läsnäolo Ei ole vanhoja luokkia. Se on Legacy-luokka, jota kutsutaan vektoriksi.
7. toteutukset Harva Set-käyttöliittymän toteutuksista on HashSet, LinkedHashSet ja Tree Set. Harva listan käyttöliittymän toteutuksista on LinkedList ja ArrayList.

Toivottavasti olemme sisällyttäneet kaikki mahdolliset erot Sarjan ja luettelon välillä. Jos sinusta tuntuu, että olemme unohtaneet jotain, ilmoita meille.