Ključna razlika – seznam proti nizu
Večina programskih jezikov uporablja nize za shranjevanje nabora podatkov iste vrste. Ena od večjih pomanjkljivosti matrik je, da je ni mogoče spremeniti, ko je velikost matrike deklarirana. Če želi programer shraniti vrednosti, ki presegajo velikost polja, mora ustvariti novo polje in kopirati obstoječe elemente v novo polje. V teh primerih je mogoče uporabiti zbirke. S podporo zbirk je mogoče dodajati elemente, brisati elemente in številne druge operacije. V programskih jezikih, kot je Java, so na voljo različne vrste zbirk. List in Set sta vmesnika hierarhije zbirk. Osnovni vmesnik za druge vmesnike je zbirka. Ključna razlika med Listom in Setom je, da List podpira večkratno shranjevanje istega elementa, medtem ko Set ne podpira večkratnega shranjevanja istega elementa. Zato niz ne dovoljuje podvajanja.
Kaj je seznam?
Seznam je vmesnik, ki razširja vmesnik zbirke. V vmesniku zbirke je na voljo več metod. Metoda dodajanja pomaga dodati element. 'Metoda odstranitve' je odstranitev elementa. Obstaja metoda »addAll« za dodajanje več elementov, metoda »removeAll« pa za odstranitev elementov iz zbirke. Metoda vsebuje pomaga ugotoviti, ali je določen predmet prisoten na seznamu ali ne. 'containsAll' je ugotoviti, ali je niz predmetov prisoten v zbirki. Metoda iteratorja se uporablja za kroženje po elementih seznama. Ker List razširja zbirko, vse metode zbirke pripadajo Listu. Razen teh metod ima seznam metode, kot sta get in set. Programer lahko dobi vrednost pri določenem indeksu z metodo get. Programer lahko nastavi vrednost pri določenem indeksu z uporabo metode set. 'IndexOf' se uporablja za iskanje indeksa elementa.
Na seznamu lahko operacije izvajate glede na položaj. Programer lahko zagotovi podatkovni element, ki bo dodan v indeks. Tako bo dodan v določen indeks. Če programer ne poda indeksa, bo element dodan na konec seznama. Prav tako ohranja vstavljeni vrstni red. Če je dodan element 1 in nato element2, bo element1 pred elementom2.
Slika 01: Seznam in nabor
ArrayList, LinkedList, Vector so nekateri razredi, ki izvajajo List. V ArrayList je dostop do elementa hiter, vstavljanje in brisanje pa nižje. ArrayList ni varen za niti. Dostop do istega seznama ArrayList iz več niti morda ne bo dal enakega rezultata. V LinkedList so elementi povezani za nazaj in naprej. Vstavljanje in brisanje elementov z uporabo LinkedList je hitrejše kot ArrayList. LinkedList implementira seznam in čakalno vrsto. Vector je podoben ArrayList, vendar je varen, ker so vse metode sinhronizirane.
Kaj je Set?
Set je vmesnik, ki razširja vmesnik zbirke. Ker vmesnik Set razširja zbirko, pripadajo tudi vse metode zbirke. Set ne podpira vrednosti podvajanja. Zato programer istega elementa ne more shraniti dvakrat. Ohranja edinstven nabor elementov. Vmesnik SortedSet razširja vmesnik Set. SortedSet ohranja elemente v razvrščenem vrstnem redu. Vmesnik NavigableSet razširja SortedSet. NavigableSet ponuja navigacijske metode, kot so nižje, tla, strop itd.
HashSet, LinkedHashSet in TreeSet so nekateri razredi, ki izvajajo vmesnik Set. HashSet izvaja vmesnik Set. Ne vzdržuje vstavljenega vrstnega reda. Če so vrednosti vstavljene kot a, x, b, se lahko shranijo kot, x, a, b. LinkedSet vzdržuje vstavljeni vrstni red. Če so elementi vstavljeni v vrstnem redu a, x, b, bo vrstni red shranjevanja a, x, b. TreeSet izvaja Set in NavigableSet. Ne vzdržuje vrstnega reda vstavljanja, ampak shrani elemente v razvrščenem vrstnem redu. Če je vstavljeni vrstni red a, c, b, bodo elementi shranjeni kot a, b, c. Vsi HashSet, LinkedHashSet in TreeSet ne bodo imeli nobenih podvojenih elementov.
Kakšne so podobnosti med seznamom in naborom?
- Oba vmesnika List in Set razširjata vmesnik zbirke.
- Tako Seznam kot Set podpirata operacije, kot sta dodajanje in odstranjevanje elementov.
Kakšna je razlika med seznamom in nizom?
Seznam proti nizu |
|
Vmesnik seznama je podvmesnik zbirke, ki vsebuje metode za izvajanje operacij, kot sta vstavljanje, brisanje na podlagi indeksa. | Set Interface je podvmesnik zbirke, ki vsebuje metode za izvajanje operacij, kot so vstavljanje, brisanje elementov ob ohranjanju edinstvenih elementov. |
Razredi | |
ArrayList, Vector in LinkedList so razredi, ki izvajajo vmesnik List. | HashSet, LinkedHashSet in TreeSet so razredi, ki izvajajo vmesnik Set. |
Podvajanje elementov | |
Seznam podpira podvajanje elementov. | Set ne podpira podvajanja elementov. Elementi so edinstveni. |
Povzetek – seznam proti naboru
Zbirke se uporabljajo za dinamično shranjevanje elementov. Programski jeziki, kot je Java, nudijo vmesnik Collection. List in Set sta dva vmesnika, ki pripadata vmesniku zbirke. Oba vmesnika razširjata zbirko. Ta članek je obravnaval razliko med seznamom in naborom. Ključna razlika med Listom in Setom je, da List podpira večkratno shranjevanje istega elementa, medtem ko Set ne podpira večkratnega shranjevanja istega elementa. Set vedno ohranja edinstvene elemente.