Ključna razlika – TreeSet proti HashSet
Večina programskih jezikov podpira polja. Je podatkovna struktura, ki se uporablja za shranjevanje več elementov iste podatkovne vrste. Če je matrika deklarirana za šest elementov, je ni mogoče uporabiti za shranjevanje desetih elementov. Zato matrike niso dinamične in ne morejo spremeniti velikosti matrike, ko je deklarirana. Programski jeziki, kot je Java, podpirajo zbirke, ki se uporabljajo za dinamično shranjevanje podatkov. Zbirke podpirajo operacije, kot je dodajanje in brisanje elementov. V hierarhiji zbirke je več vmesnikov in razredov. Osnovni vmesnik je vmesnik zbirke. Set je vmesnik, ki razširja vmesnik zbirke. Ne dopušča podvajanja. TreeSet in HashSet sta dva razreda v hierarhiji zbirke in oba izvajata vmesnik Set. TreeSet je razred, ki implementira vmesnik Set in se uporablja za shranjevanje edinstvenih elementov v naraščajočem vrstnem redu. HashSet je razred, ki implementira vmesnik Set in se uporablja za shranjevanje edinstvenih elementov z uporabo mehanizma Hashing. Ključna razlika med TreeSet in HashSet je v tem, da TreeSet shranjuje elemente v naraščajočem vrstnem redu, medtem ko HashSet ne shranjuje elementov v naraščajočem vrstnem redu. Tako TreeSet kot HashSet shranjujeta samo edinstvene elemente.
Kaj je TreeSet?
Razred TreeSet izvaja vmesnik NavigableSet. Vmesnik NavigableSet razširja vmesnike SortedSet, Set, Collection in Iterable v hierarhičnem vrstnem redu. TreeSet vedno vzdržuje naraščajoči vrstni red. Če so bili elementi vstavljeni v vrstnem redu B, A, C, bodo shranjeni kot A, B, C. Metode, kot sta add (), remove (), se lahko uporabljajo z objektom TreeSet. Metodo dodajanja lahko uporabite za dodajanje elementa. Metoda odstranitve se uporablja za odstranitev elementa iz zbirke. To je nekaj metod, ki jih je mogoče uporabiti s TreeSet.
Slika 01: Program z TreeSet
V skladu z zgornjim programom se ustvari objekt tipa TreeSet. Podatkovni elementi niza so temu objektu dodani z metodo add. Vrstni red vstavljenih podatkov je A, D, A, B, C, D. Z uporabo iteratorja se shranjene vrednosti natisnejo na zaslon. Izhod je A, B, C, D. Čeprav sta dve črki A in dve črki D, izpis prikaže vsako A in eno D. Zato TreeSet shranjuje edinstvene elemente. Ni posebnega vrstnega reda vstavljanja, vendar je pri opazovanju izhoda razvidno, da TreeSet ohranja naraščajoči vrstni red elementov.
Kaj je HashSet?
Razred HashSet razširja razred AbstractSet, ki implementira vmesnik Set. Vmesnik Set podeduje vmesnike Collection in Iterable v hierarhičnem vrstnem redu. V HashSet ni nobenega zagotovila, da bodo elementi ohranili naraščajoči in vstavljeni vrstni red. Če je bil vstavljen vrstni red A, B, C, se lahko vrednosti shranijo kot C, A, B. Vrstni red shranjevanja je lahko tudi A, B, C, vendar ni nobenega zagotovila, da se ohrani vstavljeni vrstni red ali naraščajoči vrstni red.
Slika 02: Program s HashSet
V skladu z zgornjim programom se ustvari objekt tipa HashSet. Podatkovni elementi niza so temu objektu dodani z metodo add. Vrstni red vstavljenih podatkov je L, R, M, M, R, L. S pomočjo iteratorja se shranjene vrednosti natisnejo na zaslon. Izhod je R L M. Čeprav sta od vsakega dve črki L, R in M, je prikazana samo ena črka od vsakega. Zato HashSet shranjuje edinstvene elemente. Pri opazovanju izpisa je razvidno, da ni naraščajočega vrstnega reda ali pa se ohrani vstavljeni vrstni red.
Kakšne so podobnosti med TreeSet in HashSet?
- Tako TreeSet kot HashSet sta razreda, ki pripadata hierarhiji zbirke.
- Tako TreeSet kot HashSet shranjujeta samo edinstvene elemente.
- Tako TreeSet kot HashSet je mogoče uporabiti za shranjevanje in upravljanje številnih elementov.
- Tako TreeSet kot HashSet ne vzdržujeta vstavljenega vrstnega reda.
Kakšna je razlika med TreeSet in HashSet?
TreeSet proti HashSet |
|
TreeSet je razred v hierarhiji zbirke, ki se uporablja za shranjevanje edinstvenih elementov v naraščajočem vrstnem redu. | HashSet je razred v hierarhiji zbirke, ki se uporablja za shranjevanje edinstvenih elementov z uporabo mehanizma zgoščevanja. |
Shranjevanje elementa | |
TreeSet shrani elemente v naraščajočem vrstnem redu. | HashSet ne shrani elementov v naraščajočem vrstnem redu. |
Povzetek – TreeSet proti HashSet
Pri programiranju je zahtevano dinamično shranjevanje podatkovnih elementov. Programski jeziki, kot je Java, podpirajo zbirke za doseganje te naloge. V hierarhiji zbirke je več vmesnikov in razredov. TreeSet in HashSet sta dva razreda v hierarhiji zbirke. Oba izvajata vmesnik Set. TreeSet je razred, ki implementira vmesnik Set in se uporablja za shranjevanje edinstvenih elementov v naraščajočem vrstnem redu. HashSet je razred, ki implementira vmesnik Set in se uporablja za shranjevanje edinstvenih elementov z uporabo mehanizma Hashing. Razlika med TreeSet in HashSet je v tem, da TreeSet shranjuje elemente v naraščajočem vrstnem redu, medtem ko HashSet ne shranjuje elementov v naraščajočem vrstnem redu. Ta članek je obravnaval razliko med TreeSet in HashSet.