Skirtumas tarp masyvų sąrašo ir susietų sąrašų
Prieš įsigilindami į faktinius skirtumus, leiskite mums sužinoti, kokie jie iš tikrųjų yra?
Matematikoje mes susidūrėme su aibės sąvoka, o aibė čia daugiau ar mažiau reiškia tą patį. Taip, tai yra elementų kolekcija ir daugeliu atvejų panašių elementų kolekcija. Galite pabandyti pridėti šiuos elementus prie rinkinio ir pabandyti spausdinti, kad suprastumėte, kaip jie iš tikrųjų saugomi.
Įvestis į rinkinį: 20, 50, 10, 30.
Tai iš tikrųjų saugoma rinkinyje kaip 10, 20, 30, 50.
Elementai čia rūšiuojami ir saugomi ne įterpimo tvarka. Tai yra viena iš rinkinio savybių, kad jis visada rūšiuoja elementus prieš saugodamas, ir, žinoma, yra tam išimčių. Viena tokių yra „LinkedhashSet“, nes ji palaiko elementų įterpimo tvarką..
Kalbant apie kompiuterį, rinkinyje yra keletas papildomų savybių, tokių kaip metodai ir paveldėjimas. Metodai yra lygiai taip pat kaip funkcijos ir jie atlieka tam tikras užduotis, tokias kaip elementų rinkinio pridėjimas, pašalinimas ar iteravimas. Daugeliui iš mūsų yra gerai žinomas terminas Paveldėjimas ir tai reiškia tą patį. Taip, metodą galime paveldėti iš jo kolekcijos, kad jį būtų galima naudoti su rinkinio sąsaja. Vėlgi mes kalbame apie naują terminą, t. Y. Rinkinio sąsają, ir tai yra ne kas kita, kaip elementų visuma, įskaitant metodus.
Tiesiog, norėdami geriau suprasti, mes pateikėme rinkinį su jo sintakse. Iš žemiau pateiktos sintaksės galėtumėte nustatyti įvairius rinkinių tipus, tokius kaip „HashSet“ ir „TreeSet“.
importuoti java.util. *;
viešosios klasės pavyzdinis pavyzdys
public static void main (Styginių argos [])
int skaičius [] = 34, 22,10,60,30,22 25, 17, 76, 12, 88, 57;
Komplektų rinkinys = naujas „HashSet“ ();
bandyti
už (int i = 0; i < 5; i++)
set.add (skaičiuoti [i]);
System.out.println (rinkinys);
„TreeSet sortedSeteg“ = naujas „TreeSet“ (rinkinys);
System.out.println („Čia mes turime rūšiuotą išvestį:“);
„System.out.println“ („sortedSeteg“);
System.out.println („Pažvelkite į pirmąjį elementą:“ + (sveikasis skaičius) sortedSet.first ());
System.out.println („Pažvelkite į paskutinį elementą:„ + (sveikasis skaičius) sortedSet.last ());
pagauti (išimtis e)
Aukščiau pateiktas kodas išvedamas taip.
[25, 17, 76, 12, 88]
Čia turime rūšiuotą išvestį:
[12, 17, 25, 76, 88]
Pažvelkite į pirmąjį elementą: 12
Pažvelkite į paskutinį elementą: 88
Sąrašas išplečia kolekciją panašiai kaip tai padarė rinkinys, tačiau jis palaiko įterpimo tvarką. Pabandykite į sąrašą įtraukti šiuos pavadinimus ir pažiūrėkite, kaip jis pridedamas.
Įvestis į sąrašą: Jonas, Nancy, Marija, Alisa.
Kaip jis saugomas sąraše: Jonas, Nancy, Marija, Alisa.
Tiesiog atkreipkite dėmesį į jų įdėjimo tvarką. Galite nustatyti, kad „Jonas“ yra pirmasis įvesties ir išvesties elementas. Po jo eina ta pati vardo įterpimo tvarka. Mes netgi galime laikyti tai viena pagrindinių sąrašo savybių.
Pažvelkime į keletą sąrašo metodų, tokių kaip ArrayList ir LinkedList, žemiau pateiktoje sintaksėje.
importuoti java.util. *;
viešosios klasės kolekcijapavyzdyspublic static void main (stygos [] args)
A1 sąrašas = naujas ArrayList ();
a1.add („Jonas“);
a1.add („Nancy“);
a1.add („Marija“);
a1.add („Alisa“);
„System.out.println“ („ArrayList Elements are“);
„System.out.print“ („\ t“ + a1);Sąrašas l1 = naujas „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);
Aukščiau pateiktos sintaksės išvestis yra tokia.
„ArrayList“ elementai yra
[Jonas, Nansi, Marija, Alisa]
„LinkedList“ elementai
[Silvia, Arjun, Deepika, Susan]
Iš aukščiau pateikto kodo labai aišku, kad tiek „ArrayList“, tiek „LinkedList“ palaiko įterpimo tvarką.
Rinkinys ir sąrašas turi savo metodus ir pateiksime keletą iš jų čia.
S.Ne | Rinkinys - metodai | Sąrašas - metodai |
1. | papildyti() - Tai yra objektų įtraukimas į kolekciją. | void add (int indeksas, objektas obj) - Jis prideda objektą „obj“ nurodytame kviečiamųjų sąrašo „rodyklėje“ ir įsitikina, kad, perkeliant ankstesnius elementus, nebus perrašytas joks elementas. |
2. | išvalyti () - Tai yra pašalinti objektus iš kolekcijos. | Boolean addAll (int rodyklė, C kolekcija) - Visa kolekcija „c“ pridedama prie kviečiamųjų sąrašo ir nurodytame „rodyklėje“. Tai taip pat užtikrina, kad nebūtų perrašomi jokie elementai. Taip pat galime patikrinti jo veikimo teisingumą, ištyrę grąžos vertę. Jei pakeitimas sėkmingas, grąžinama reikšmė „teisinga“, grąžinama reikšmė „klaidinga“. |
3. | yra () - Tai yra patikrinti, ar rinkinyje nėra tam tikro objekto. Tai grąžina reikšmę „true“, jei objektas yra rinkinyje. | Objekto gavimas (int indeksas) - Tai grąžina elementą ar objektą nurodytu 'indeksu'. |
4. | Yra tuščias() - Tai turi nustatyti, ar kolekcija padeda, nes joje nėra jokių elementų. Grąžina reikšmę „teisinga“, jei nėra elemento. | int lastIndexOf (objektas obj) - Tai veikia panašiai kaip indexOf () Metodas. Tai grąžina paskutinį nurodyto objekto „obj“ atvejį ir reikšmė „1“ grąžinama, jei sąraše tokio objekto nėra. Todėl jis taip pat gali būti naudojamas kaip yra () Nustatytos sąsajos metodas. |
6. | pašalinti () - Tai yra elementas iš kolekcijos pašalinti nurodant jį kaip metodo parametrą. | ListIterator listIterator () - Jis grąžina iteratorių į pradinį sąrašo rodyklę. |
7. | dydis () - Tai yra daiktų ar elementų, kuriuos turi kolekcija, skaičius. | ListIterator listIterator (int indeksas) - Tai padeda pakartoti iškviečiamąjį sąrašą, prasidedantį nurodytu „indeksu“. |
8. | - | Objekto pašalinimas (int indeksas) - Tai ištrina objektą nurodytu „rodykle“ ir grąžina ištrintą elementą. Tai taip pat sumažina gautus sąrašo indeksus, kad atspindėtų išbraukimą. |
9. | - | Objekto rinkinys (int indeksas, Object obj) - Objektą „obj“ reikia priskirti prie kviečiamųjų sąrašo nurodytame „rodyklėje“.. |
10. | - | Sąrašo subList (pradžia, int pabaiga) - Į sąrašą, kuris paskatino metodą, reikia įtraukti objektus nuo rodyklės „pradžios“ iki rodyklės „pabaigos“. |
Rinkinys niekada nepalaiko elementų, pagal kuriuos jie įdedami į jį, tvarkos, o sąrašas palaiko. Yra „LinkedHashSet“ šios taisyklės išimtis, nes ji palaiko įterpimo tvarką, tačiau kiti rinkiniai, tokie kaip „HashSet“ ir „TreeSet“, rūšiuoja elementus prieš jį saugodami. Tas pats aprašyta toliau pateiktais pavyzdžiais.
Rinkinys Įvestis: katė, lėlė, obuolys.
Laikomos kaip: obuolys, katė, lėlė.
Sąrašo įvestis: katė, lėlė, obuolys.
Laikomos kaip: katė, lėlė, obuolys.
Rinkinys niekada neleidžia kopijų, o sąrašas leidžia. Jei į sąrašą reikia įtraukti dublikatą, tada jis bus perrašytas. Pažvelkite į pavyzdžių rinkinius ir sąrašus, kuriuose yra kopijų.
Nustatyta įvestis: 10, 20, 20, 50.
Laikomos: 10, 20, 50.
Sąrašo įvestis: 10, 20, 20, 50.
Laikomos: 10, 20, 20, 50.
Rinkinys gali turėti tik vieną nulinę vertę, tuo tarpu sąrašas gali turėti daugiau nei vieną nulinę reikšmę ir nėra ribojamas jokiu skaičiumi.
Nustatyta įvestis: nulis, nulis, žmogus, šuo, lėktuvas.
Saugoma kaip niekinė, šuo, žmogus, lėktuvas.
Sąrašo įvestis: nulis, nulis, žmogus, šuo, lėktuvas.
Saugoma kaip niekinė, niekinė, žmogus, šuo, lėktuvas.
„Iterator“ metodas gerai veikia ir su „Set“, ir su „List“, o metodas „ListIterator“ veikia tik su „List“. „ListIterator“ gali būti naudojamas judėti pirmyn ir atgal per sąrašą.
Rinkinys neturi senosios klasės, o Sąrašo sąsaja turi palikimą, vadinamą „vektoriu“. Vektorius naudoja Sąrašo sąsają, todėl palaiko įterpimo tvarką. Dėl pastangų sinchronizuoti vektorių papildymai, ištrynimai ir atnaujinimai yra šiek tiek lėtesni.
Keletas „Set“ įdiegimų yra „HashSet“, „LinkedHashSet“ ir „TreeSet“. Nedaugelyje „List“ įdiegimų yra „ArrayList“ ir „LinkedList“.
Rinkinio ir sąrašo naudojimas yra visiškai priklausomas nuo reikalavimo išlaikyti įterpimo tvarką. Kaip mes sužinojome, kad rinkinys niekada nepalaiko įterpimo tvarkos, jis gali būti naudojamas, kai tvarka yra mažesnės svarbos. Panašiai naudokite sąrašą, kai reikia išlaikyti ir įterpimo seką.
S.Ne | Skirtumai | Rinkinys | Sąrašas |
1. | Įterpimo tvarka | Tai palaiko įterpimo tvarką. Pirmasis įdėtasis lieka pirmoje vietoje ir panašiai, neatsižvelgiant į jo vertę. | Jis niekada neišlaiko įterpimo tvarkos. |
2. | Metodai | Jis naudoja tokius metodus kaip pridėjimas (), išvalymas (), sudėtyje yra (), isEmpty (), pašalinimas () ir dydis (). | Jis naudoja tokius metodus kaip add (), addAll (), get (), lastIndexOf (), ListIterator () su parametru arba be jo, remove (), set () ir subList (). |
3. | Dublikatai | Niekada neleidžia kopijų, o tokių pasirodymų atveju vertė perrašoma. | Tai leidžia kopijas. |
4. | Nulinės vertės | Jis gali turėti tik vieną nulinę reikšmę. | Jis gali turėti bet kokį nulinių verčių skaičių. |
5. | Iteratoriaus () ir sąrašoIteratoriaus () naudojimas | Jis naudoja tik metodo iteratorių (). | Jis naudoja tiek iteratorių (), tiek listIterator (). |
6. | Legacy klasės buvimas | „Legacy“ klasės nėra. | Ji turi „Legacy“ klasę, vadinamą vektoriu. |
7. | Įgyvendinimai | Nedaug „Set“ sąsajos įgyvendinimų yra „HashSet“, „LinkedHashSet“ ir „Tree Set“. | Nedaug sąrašo sąsajos įgyvendinimų yra „LinkedList“ ir „ArrayList“. |
Tikiuosi, mes įtraukėme visus įmanomus skirtumus tarp rinkinio ir sąrašo. Jei manote, kad kažko praleidome, praneškite mums.