Verschil tussen HashMap en TreeMap in Java

Schrijver: Laura McKinney
Datum Van Creatie: 2 April 2021
Updatedatum: 11 Kunnen 2024
Anonim
HashMap, LinkedHashMap and TreeMap in Java
Video: HashMap, LinkedHashMap and TreeMap in Java

Inhoud


HashMap en TreeMap zijn de Map-klassen en beide implementeren de Map-interface. Kaart is een object waarin sleutel / waarde-paren worden opgeslagen, waarbij elke sleutel uniek is en er mogelijk dubbele waarden zijn. De klasse HashMap gebruikt de hashtabel als gegevensstructuur. De TreeMap gebruikt de rood-zwarte boom als datastructuur. Het belangrijkste verschil tussen HashMap en Treemap is dat de Hash kaart behoudt de invoegvolgorde niet, terwijl de treemap doet.

Laten we dus onze discussie over de verschillen tussen HashMap en TreeMap beginnen met behulp van de onderstaande vergelijkingstabel.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingHash kaartTreeMap
basis- HashMap handhaaft de invoegvolgorde niet.TreeMap handhaaft de invoegvolgorde.
Data structuurHashMap gebruikt Hash Table als onderliggende gegevensstructuur.TreeMap gebruikt Red-Black Tree als onderliggende gegevensstructuur.
Null Keys and Values HashMap staat Null key eenmaal ad null waarde een willekeurig aantal keer toe.TreeMap staat geen Null-sleutel toe, maar laat Null-waarden een willekeurig aantal keren toe.
Breidt uit en implementeertHashMap breidt de AbstractMap-klasse uit en implementeert de kaartinterface.TreeMap breidt de AbstractMap-klasse uit en implementeert de SortedMap- en NavigableMap-interface.
PrestatieHashMap werkt sneller.TreeMap werkt in vergelijking met HashMap langzamer.


Definitie van HashMap

Hash kaart is een kaartklasse. Het gebruikt de hash tafel, als een gegevensstructuur om het sleutelwaardepaar van de kaarten op te slaan. Het invoegen van sleutel / waarde-paar gebeurt met behulp van de hash-code van de sleutels. Daarom moet elke sleutel in de kaart uniek zijn, omdat deze wordt gebruikt om de waarden op te halen.

De invoegvolgorde in HashMap is niet behouden, wat betekent dat het hashmap-object de elementen niet retourneert in de volgorde waarin ze zijn ingevoegd. Aan de andere kant staat de volgorde waarin de elementen worden geretourneerd niet vast.

De sleutel mag zijn NUL tegelijk, maar de waarden kan zijn NUL op elk gewenst moment. De HashMap kan de heterogeen objecten voor sleutels en waarden.

Er zijn vier constructeurs van HashMap:


HashMap () HashMap (kaart m) HashMap (int capaciteit), HashMap (int capaciteit, float fillRatio)

De eerste constructor maakt het lege object van HashMap. De tweede constructor initialiseert de HashMap met elementen van Map m. De derde constructor initialiseert de HashMap met de capaciteit die in het argument wordt vermeld. De vierde constructor initialiseert de capaciteit en de opvullingsverhouding van het HashMap-object.

De standaard capaciteit van de HashMap is 16en de standaardwaarde vulverhouding van de HashMap is 0.75.

Definitie van TreeMap

Zoals HashMap, TreeMap is ook een kaartklasse. TreeMap breidt zich uit AbstractMap klasse en werktuigen NavigabelMap en SortedMap. De TreeMap-objecten slaan de kaartelementen op in de boomstructuur. De gegevensstructuur die wordt gebruikt voor het opslaan van de kaart is de Rood-zwarte boom.

De TreeMap slaat het sleutelwaardepaar op in de gesorteerde volgorde, wat helpt bij het snel ophalen van de elementen. Het TreeMap-object retourneert de elementen in de gesorteerde (oplopend) bestellen.

Er zijn vier constructors van TreeMap:

TreeMap () TreeMap (Comparator <? Super K> comp) TreeMap (Kaart <? Breidt K uit,? Breidt V> m) TreeMap (SortedMap sm)

De eerste constructeurs maken een leeg object van TreeMap dat in natuurlijke volgorde zijn sleutels zou sorteren. De tweede constructor maakt een lege boomkaart die wordt gesorteerd op de Vergelijker cmp. De derde constructor hierboven maakt een boomkaart die wordt geïnitialiseerd met behulp van vermeldingen van Kaart m. De vierde constructor maakt een boomkaart die wordt geïnitialiseerd met de vermeldingen van SortedMap sm.

Treemap heeft zelf geen nieuwe methode, het gebruikt de methode van interface NavigableMap en SortedMap en de klasse AbstractMap.

  1. Beide klassen worden gebruikt om kaartobjecten te maken, maar het fundamentele verschil tussen HashMap en Treemap is dat HashMap de invoegvolgorde niet handhaaft terwijl de Treemap dat wel doet.
  2. De gegevensstructuur die door Hashmap wordt gebruikt om kaartelementen op te slaan, is de hashtabel en de gegevensstructuur die TreeMap gebruikt om de kaartelementen op te slaan, is de rood-zwarte boom.
  3. Zowel de klassen Hashmap als Treemap breiden de klasse AbstractMap uit, maar de klasse HashMap implementeert de kaartinterface en de TreeMap implementeert de interface NavigableMap en SortedMap.
  4. De waarden kunnen een willekeurig aantal keren nul zijn in beide, maar de sleutel mag slechts één keer nul zijn in HashMap en een sleutel kan nooit in Treemap staan.
  5. De prestaties van HashMap zijn sneller, het verspilt geen tijd aan het sorteren van de kaartelementen zoals TreeMap. Daarom presteert TreeMap langzamer dan HashMap.

Gevolgtrekking:

TreeMap mag alleen worden gebruikt als u sleutelwaardeparen in gesorteerde vorm nodig hebt. Omdat sorteren prestaties omvat. HashMap niet-gesynchroniseerd werkt sneller.