Ključna razlika – popis u odnosu na skup
Većina programskih jezika koristi nizove za pohranu skupa podataka iste vrste. Jedan veliki nedostatak nizova je taj što se jednom deklarirana veličina niza ne može mijenjati. Ako programer želi pohraniti vrijednosti veće od veličine niza, tada bi trebao stvoriti novi niz i kopirati postojeće elemente u novi niz. U tim situacijama mogu se koristiti zbirke. Moguće je dodavati elemente, brisati elemente i mnoge druge operacije uz podršku kolekcija. Postoje različite vrste kolekcija dostupnih u programskim jezicima kao što je Java. List i Set su sučelja hijerarhije zbirki. Osnovno sučelje za druga sučelja je Collection. Ključna razlika između Liste i Seta je u tome što List podržava pohranjivanje istog elementa više puta dok Set ne podržava pohranjivanje istog elementa više puta. Stoga skup ne dopušta dupliciranje.
Što je popis?
Popis je sučelje koje proširuje sučelje zbirke. Postoji nekoliko metoda u sučelju zbirke. Metoda dodavanja pomaže dodati element. 'Metoda uklanjanja' je uklanjanje elementa. Postoji 'metoda addAll' za dodavanje više elemenata dok 'metoda removeAll' za uklanjanje elemenata iz kolekcije. Sadrži metoda pomaže pronaći je li određeni objekt prisutan na popisu ili ne. 'containsAll' služi za pronalaženje je li skup objekata prisutan u kolekciji. Metoda iteratora koristi se za prolazak kroz stavke popisa. Kako List proširuje Collection, sve metode Collection pripadaju Listu. Osim tih metoda, popis ima metode kao što su get i set. Programer može dobiti vrijednost na određenom indeksu pomoću get metode. Programer može postaviti vrijednost na određeni indeks pomoću metode postavljanja. 'IndexOf' se koristi za pronalaženje indeksa elementa.
Na popisu se operacije mogu izvoditi prema poziciji. Programer može osigurati podatkovni element koji treba dodati u indeks. Stoga će biti dodan u određeni indeks. Ako programer ne da indeks, element će biti dodan na kraj popisa. Također održava umetnuti redoslijed. Ako se doda element 1, a zatim se doda element2, tada će element1 biti prije elementa2.
Slika 01: Popis i skup
ArrayList, LinkedList, Vector neke su klase koje implementiraju List. U ArrayList, pristup elementu je brz, ali je umetanje i brisanje manje. ArrayList nije siguran za niti. Pristup istom ArrayListu iz više niti možda neće dati isti rezultat. U LinkedList-u, elementi su povezani i prema natrag i prema naprijed. Umetanje i brisanje elemenata pomoću LinkedList-a brže je od ArrayList-a. LinkedList implementira i List i Queue Both. Vector je sličan ArrayList-u, ali je siguran jer su sve metode sinkronizirane.
Što je set?
Set je sučelje koje proširuje sučelje zbirke. Kako Set sučelje proširuje Collection, sve metode Collection također pripadaju Setu. Skup ne podržava duplicirane vrijednosti. Stoga programer ne može pohraniti isti element dva puta. Održava jedinstven skup elemenata. Sučelje SortedSet proširuje sučelje Set. SortedSet održava elemente poredanim redoslijedom. Sučelje NavigableSet proširuje SortedSet. NavigableSet pruža metode navigacije kao što su niži, podni, stropni itd.
HashSet, LinkedHashSet i TreeSet neke su klase koje implementiraju Set sučelje. HashSet implementira Set sučelje. Ne održava umetnuti poredak. Ako su vrijednosti umetnute kao a, x, b, mogle bi se pohraniti kao, x, a, b. LinkedSet održava umetnuti redoslijed. Ako su elementi umetnuti redoslijedom a, x, b, redoslijed pohranjivanja bit će a, x, b. TreeSet implementira Set i NavigableSet. Ne održava redoslijed umetanja, već pohranjuje elemente sortiranim redoslijedom. Ako je umetnuti poredak a, c, b, tada će elementi biti pohranjeni kao a, b, c. Svi HashSet, LinkedHashSet i TreeSet neće imati duple elemente.
Koje su sličnosti između liste i skupa?
- I sučelja List i Set proširuju sučelje zbirke.
- I List i Set podržavaju operacije kao što su dodavanje, uklanjanje elemenata.
Koja je razlika između popisa i skupa?
Popis vs Skup |
|
List Interface je podsučelje zbirke koje sadrži metode za izvođenje operacija kao što su umetanje, brisanje na temelju indeksa. | Set Interface je podsučelje zbirke koje sadrži metode za izvođenje operacija kao što su umetanje, brisanje elemenata uz zadržavanje jedinstvenih elemenata. |
Predavanja | |
ArrayList, Vector i LinkedList su klase koje implementiraju List sučelje. | HashSet, LinkedHashSet i TreeSet su klase koje implementiraju Set sučelje. |
Dupliciranje elemenata | |
Popis podržava dupliciranje elemenata. | Set ne podržava umnožavanje elemenata. Elementi su jedinstveni. |
Sažetak – popis u odnosu na skup
Zbirke se koriste za dinamičko pohranjivanje elemenata. Programski jezici kao što je Java pružaju sučelje Collection. List i Set su dva sučelja koja pripadaju sučelju Collection. Oba sučelja proširuju Collection. Ovaj članak raspravlja o razlici između popisa i skupa. Ključna razlika između Liste i Seta je u tome što List podržava pohranjivanje istog elementa više puta dok Set ne podržava pohranjivanje istog elementa više puta. Skup uvijek održava jedinstvene elemente.