Ključna razlika – TreeSet vs HashSet
Većina programskih jezika podržava nizove. To je struktura podataka koja se koristi za pohranjivanje više elemenata istog tipa podataka. Ako je niz deklarisan za šest elemenata, onda se ne može koristiti za pohranjivanje deset elemenata. Stoga, nizovi nisu dinamički i ne mogu promijeniti veličinu niza nakon što je deklariran. Programski jezici kao što je Java podržavaju zbirke koje se koriste za dinamičko skladištenje podataka. Kolekcije podržavaju operacije kao što su dodavanje elemenata i brisanje elemenata. Postoji niz interfejsa i klasa u hijerarhiji kolekcije. Osnovni interfejs je interfejs za prikupljanje. Set je interfejs koji proširuje interfejs kolekcije. Ne dozvoljava dupliranje. TreeSet i HashSet su dvije klase u hijerarhiji kolekcije i oba implementiraju Set interfejs. TreeSet je klasa koja implementira Set interfejs i koristi se za skladištenje jedinstvenih elemenata u rastućem redosledu. HashSet je klasa koja implementira Set interfejs i koristi se za skladištenje jedinstvenih elemenata koristeći Hashing mehanizam. Ključna razlika između TreeSet-a i HashSet-a je u tome što TreeSet pohranjuje elemente u rastućem redoslijedu, dok HashSet ne pohranjuje elemente u rastućem redoslijedu. I TreeSet i HashSet pohranjuju samo jedinstvene elemente.
Šta je TreeSet?
TreeSet klasa implementira NavigableSet interfejs. Interfejs NavigableSet proširuje interfejse SortedSet, Set, Collection i Iterable u hijerarhijskom redoslijedu. TreeSet uvijek održava rastući redoslijed. Ako su elementi umetnuti redosledom B, A, C, oni će biti pohranjeni kao A, B, C. Metode kao što su add (), remove () mogu se koristiti sa TreeSet objektom. Metoda add može se koristiti za dodavanje elementa. Metoda remove se koristi za uklanjanje elementa iz kolekcije. Ovo su neke metode koje se mogu koristiti sa TreeSet-om.
Slika 01: Program sa TreeSet
Prema gore navedenom programu kreira se objekat tipa TreeSet. Elementi podataka niza se dodaju tom objektu pomoću metode add. Redoslijed umetanja podataka je A, D, A, B, C, D. Koristeći iterator, pohranjene vrijednosti se ispisuju na ekran. Izlaz je A, B, C, D. Iako postoje dva slova A i dva slova D, izlaz prikazuje po jedno A i jedno D. Stoga, TreeSet pohranjuje jedinstvene elemente. Ne postoji poseban redosled umetanja, ali kada se posmatra izlaz, može se videti da TreeSet održava rastući redosled elemenata.
Šta je HashSet?
Klasa HashSet proširuje klasu AbstractSet koja implementira Set Interface. Interfejs Set nasljeđuje interfejse Collection i Iterable u hijerarhijskom redoslijedu. U HashSet-u ne postoji garancija da će elementi održavati rastući i umetnuti redoslijed. Ako je umetnuti redoslijed bio A, B, C, vrijednosti bi se mogle pohraniti kao C, A, B. Redoslijed pohranjivanja također može biti A, B, C, ali ne postoji garancija da će se umetnuti ili rastući redosljed održati.
Slika 02: Program sa HashSet-om
Prema gore navedenom programu kreira se objekat tipa HashSet. Elementi podataka niza se dodaju tom objektu pomoću metode add. Redoslijed umetanja podataka je L, R, M, M, R, L. Koristeći iterator, pohranjene vrijednosti se ispisuju na ekran. Izlaz je R L M. Iako postoje po dva slova L, R i M, prikazano je samo jedno slovo od svakog. Stoga, HashSet pohranjuje jedinstvene elemente. Kada se posmatra izlaz, može se vidjeti da nema rastućeg reda ili se umetnuti poredak održava.
Koje su sličnosti između TreeSeta i HashSeta?
- I TreeSet i HashSet su klase koje pripadaju hijerarhiji kolekcije.
- I TreeSet i HashSet pohranjuju samo jedinstvene elemente.
- I TreeSet i HashSet se mogu koristiti za pohranjivanje i manipulaciju mnogim elementima.
- I TreeSet i HashSet ne održavaju umetnuti redoslijed.
Koja je razlika između TreeSeta i HashSeta?
TreeSet vs HashSet |
|
TreeSet je klasa u hijerarhiji kolekcije koja se koristi za pohranjivanje jedinstvenih elemenata u rastućem redoslijedu. | HashSet je klasa u hijerarhiji kolekcije koja se koristi za pohranjivanje jedinstvenih elemenata korištenjem Hashing mehanizma. |
Pohrana elemenata | |
TreeSet pohranjuje elemente u rastućem redoslijedu. | HashSet ne pohranjuje elemente u rastućem redoslijedu. |
Sažetak – TreeSet vs HashSet
U programiranju je potrebno dinamički pohranjivati elemente podataka. Programski jezici kao što je Java podržavaju kolekcije za postizanje ovog zadatka. Postoji niz interfejsa i klasa u hijerarhiji kolekcije. TreeSet i HashSet su dvije klase u hijerarhiji kolekcije. Oba implementiraju Set interfejs. TreeSet je klasa koja implementira Set interfejs i koristi se za skladištenje jedinstvenih elemenata u rastućem redosledu. HashSet je klasa koja implementira Set sučelje i koristi se za pohranjivanje jedinstvenih elemenata koristeći Hashing mehanizam. Razlika između TreeSet-a i HashSet-a je u tome što TreeSet pohranjuje elemente u rastućem redoslijedu dok HashSet ne pohranjuje elemente u rastućem redoslijedu. Ovaj članak govori o razlici između TreeSeta i HashSeta.