Võtmete erinevus – TreeSet vs HashSet
Enamik programmeerimiskeeli toetab massiive. See on andmestruktuur, mida kasutatakse mitme sama andmetüübi elemendi salvestamiseks. Kui kuue elemendi jaoks on deklareeritud massiiv, ei saa seda kasutada kümne elemendi salvestamiseks. Seetõttu ei ole massiivid dünaamilised ega saa pärast deklareerimist massiivi suurust muuta. Programmeerimiskeeled, nagu Java, toetavad kogusid, mida kasutatakse andmete dünaamiliseks salvestamiseks. Kogud toetavad toiminguid, nagu elementide lisamine ja kustutamine. Kogu hierarhias on mitmeid liideseid ja klasse. Põhiliides on koguliides. Set on liides, mis laiendab kogu liidest. See ei võimalda dubleerimist. TreeSet ja HashSet on kogumise hierarhias kaks klassi ja mõlemad rakendavad komplekti liidest. TreeSet on klass, mis rakendab Set liidest ja seda kasutatakse unikaalsete elementide salvestamiseks kasvavas järjekorras. HashSet on klass, mis rakendab Set liidest ja seda kasutatakse unikaalsete elementide salvestamiseks räsimehhanismi abil. Peamine erinevus TreeSeti ja HashSeti vahel on see, et TreeSet salvestab elemendid kasvavas järjekorras, samas kui HashSet ei salvesta elemente kasvavas järjekorras. Nii TreeSet kui ka HashSet salvestavad ainult unikaalseid elemente.
Mis on TreeSet?
TreeSeti klass rakendab NavigableSeti liidest. Liides NavigableSet laiendab liideseid SortedSet, Set, Collection ja Iterable hierarhilises järjekorras. TreeSet säilitab alati kasvavas järjekorras. Kui elemendid sisestati järjestuses B, A, C, salvestatakse need kujul A, B, C. TreeSet objektiga saab kasutada selliseid meetodeid nagu add (), eemalda (). Elemendi lisamiseks saab kasutada lisamismeetodit. Eemaldamismeetodit kasutatakse elemendi eemaldamiseks kogust. Need on mõned meetodid, mida saab TreeSetiga kasutada.
Joonis 01: Programm TreeSetiga
Vastav alt ül altoodud programmile luuakse TreeSet tüüpi objekt. Stringi andmeelemendid lisatakse sellele objektile lisamismeetodi abil. Andmete sisestamise järjekord on A, D, A, B, C, D. Iteraatori abil prinditakse salvestatud väärtused ekraanile. Väljund on A, B, C, D. Kuigi on kaks A-tähte ja kaks D-tähte, kuvatakse väljundis üks A ja üks D. Seetõttu salvestab TreeSet ainulaadseid elemente. Konkreetset sisestamisjärjekorda pole, kuid väljundit jälgides on näha, et TreeSet säilitab elementide kasvavas järjekorras.
Mis on HashSet?
Klass HashSet laiendab klassi AbstractSet, mis rakendab Set Interface'i. Liides Set pärib kogumise ja itereeritava liidesed hierarhilises järjekorras. HashSetis ei ole mingit garantiid, et elemendid säilitavad kasvavas ja sisestatud järjestuses. Kui sisestatud järjestus oli A, B, C, võidakse väärtused salvestada kujul C, A, B. Salvestusjärjestus võib olla ka A, B, C, kuid pole garantiid, et sisestatud või tõusev järjekord säilib.
Joonis 02: Programm koos HashSetiga
Vastav alt ül altoodud programmile luuakse HashSet tüüpi objekt. Stringi andmeelemendid lisatakse sellele objektile lisamismeetodi abil. Andmete sisestamise järjekord on L, R, M, M, R, L. Iteraatori abil trükitakse salvestatud väärtused ekraanile. Väljund on R L M. Kuigi mõlemas on kaks L-, R- ja M-tähte, kuvatakse mõlemast ainult üks täht. Seetõttu salvestab HashSet ainulaadseid elemente. Väljundit jälgides on näha, et kasvavat järjekorda pole või sisestatud järjekord säilib.
Millised on TreeSeti ja HashSeti sarnasused?
- Nii TreeSet kui ka HashSet kuuluvad kogude hierarhiasse.
- Nii TreeSet kui ka HashSet salvestavad ainult unikaalseid elemente.
- Nii TreeSeti kui ka HashSeti saab kasutada paljude elementide salvestamiseks ja nendega manipuleerimiseks.
- Nii TreeSet kui ka HashSet ei säilita sisestatud järjekorda.
Mis vahe on TreeSetil ja HashSetil?
TreeSet vs HashSet |
|
TreeSet on klass kogu hierarhias, mida kasutatakse unikaalsete elementide salvestamiseks kasvavas järjekorras. | HashSet on klass kogu hierarhias, mida kasutatakse unikaalsete elementide salvestamiseks räsimehhanismi abil. |
Elementide salvestamine | |
TreeSet salvestab elemendid kasvavas järjekorras. | HashSet ei salvesta elemente kasvavas järjekorras. |
Kokkuvõte – TreeSet vs HashSet
Programmeerimisel on nõutav andmeelementide dünaamiline salvestamine. Programmeerimiskeeled, nagu Java, toetavad selle ülesande täitmiseks kogusid. Kogu hierarhias on mitmeid liideseid ja klasse. TreeSet ja HashSet on kogu hierarhias kaks klassi. Mõlemad rakendavad liidest Set. TreeSet on klass, mis rakendab Set liidest ja seda kasutatakse unikaalsete elementide salvestamiseks kasvavas järjekorras. HashSet on klass, mis rakendab Set liidest ja seda kasutatakse unikaalsete elementide salvestamiseks räsimehhanismi abil. TreeSeti ja HashSeti erinevus seisneb selles, et TreeSet salvestab elemendid kasvavas järjekorras, samas kui HashSet ei salvesta elemente kasvavas järjekorras. Selles artiklis käsitleti TreeSeti ja HashSeti erinevust.