nyckelskillnad – TreeSet vs HashSet
De flesta programmeringsspråk stöder Arrays. Det är en datastruktur som används för att lagra flera element av samma datatyp. Om det finns en array deklarerad för sex element, kan den inte användas för att lagra tio element. Därför är arrayer inte dynamiska och kan inte ändra storleken på arrayen när den väl har deklarerats. Programmeringsspråk som Java stöder samlingar som används för att lagra data dynamiskt. Samlingar stöder operationer som att lägga till element och ta bort element. Det finns ett antal gränssnitt och klasser i samlingshierarkin. Basgränssnittet är samlingsgränssnittet. Set är ett gränssnitt som utökar samlingsgränssnittet. Det tillåter inte dubbelarbete. TreeSet och HashSet är två klasser i samlingshierarkin och båda implementerar Set-gränssnittet. TreeSet är en klass som implementerar Set-gränssnittet och den används för att lagra unika element i stigande ordning. HashSet är en klass som implementerar Set-gränssnittet och den används för att lagra unika element med hjälp av Hashing-mekanismen. Den viktigaste skillnaden mellan TreeSet och HashSet är att TreeSet lagrar elementen i stigande ordning medan HashSet inte lagrar elementen i stigande ordning. Både TreeSet och HashSet lagrar bara unika element.
Vad är en TreeSet?
TreeSet-klassen implementerar NavigableSet-gränssnitt. NavigableSet-gränssnittet utökar gränssnitten SortedSet, Set, Collection och Iterable i hierarkisk ordning. TreeSet upprätthåller alltid den stigande ordningen. Om elementen infogades i B, A, C ordning, kommer de att lagras som A, B, C. Metoderna som add (), remove () kan användas med TreeSet objekt. Add-metoden kan användas för att lägga till ett element. Remove-metoden används för att ta bort ett element från samlingen. Det är några metoder som kan användas med TreeSet.
Figur 01: Program med TreeSet
Enligt programmet ovan skapas ett objekt av typen TreeSet. Strängdataelementen läggs till det objektet med hjälp av add-metoden. Ordningen som infogas är A, D, A, B, C, D. Med iteratorn skrivs de lagrade värdena ut på skärmen. Utdata är A, B, C, D. Även om det finns två A-bokstäver och två D-bokstäver, visar utdata den ena A och en D vardera. Därför lagrar TreeSet unika element. Det finns ingen speciell insättningsordning men när man observerar utdata kan det ses att TreeSet bibehåller den stigande ordningen för elementen.
Vad är ett HashSet?
Klassen HashSet utökar klassen AbstractSet som implementerar Set Interface. Set-gränssnittet ärver Collection och Iterable-gränssnitt i hierarkisk ordning. I HashSet finns det ingen garanti för att elementen kommer att behålla den stigande ordningen och den infogade ordningen. Om den infogade ordningen var A, B, C kan värdena lagras som C, A, B. Lagringsordning kan också vara A, B, C men det finns ingen garanti för att den infogade ordningen eller stigande ordningen bibehålls.
Figur 02: Program med HashSet
Enligt programmet ovan skapas ett objekt av typen HashSet. Strängdataelementen läggs till det objektet med hjälp av add-metoden. Ordningen som infogas är L, R, M, M, R, L. Med iteratorn skrivs de lagrade värdena ut på skärmen. Utdata är R L M. Även om det finns två L-, R- och M-bokstäver från varje, visas bara en bokstav från varje. Därför lagrar HashSet unika element. När man observerar utdata kan det ses att det inte finns någon stigande ordning eller att den infogade ordningen bibehålls.
Vilka är likheterna mellan TreeSet och HashSet?
- Både TreeSet och HashSet är klasser som tillhör samlingshierarkin.
- Både TreeSet och HashSet lagrar endast unika element.
- Både TreeSet och HashSet kan användas för att lagra och manipulera många element.
- Både TreeSet och HashSet bibehåller inte den infogade ordningen.
Vad är skillnaden mellan TreeSet och HashSet?
TreeSet vs HashSet |
|
TreeSet är en klass i samlingshierarkin som används för att lagra unika element i stigande ordning. | HashSet är en klass i samlingshierarkin som används för att lagra unika element med hjälp av hashing-mekanismen. |
Elementlagring | |
TreeSet lagrar elementen i stigande ordning. | HashSet lagrar inte elementen i stigande ordning. |
Sammanfattning – TreeSet vs HashSet
I programmering krävs att dataelement lagras dynamiskt. Programmeringsspråk som Java stöder samlingar för att utföra denna uppgift. Det finns ett antal gränssnitt och klasser i samlingshierarkin. TreeSet och HashSet är två klasser i samlingshierarkin. Båda implementerar Set-gränssnittet. TreeSet är en klass som implementerar Set-gränssnittet och den används för att lagra unika element i stigande ordning. HashSet är en klass som implementerar Set-gränssnittet och den används för att lagra unika element med hjälp av Hashing-mekanismen. Skillnaden mellan TreeSet och HashSet är att TreeSet lagrar elementen i stigande ordning medan HashSet inte lagrar elementen i stigande ordning. Den här artikeln diskuterade skillnaden mellan TreeSet och HashSet.