Erinevused HashMapi ja TreeMapi vahel

HashMap on osa Java kollektsioonist. See pakub Java Map Interface'i põhirakendust. Andmeid hoitakse paaris (võti, väärtus). Väärtusele juurdepääsu saamiseks peate teadma selle võtit. HashMap on tuntud kui HashMap, kuna see kasutab räsimise tehnikat. TreeMapit kasutatakse kaardiliidese ja NavigableMap rakendamiseks koos abstraktse klassiga. Kaart sorteeritakse selle võtmete loomuliku järjekorra järgi või kaardi loomise ajal pakutava võrdleja järgi, sõltuvalt sellest, millist konstruktorit seda kasutatakse.

HashMapi ja TreeMapi sarnasused

Lisaks erinevustele on hashmapi ja puukaardi vahel ka järgmised sarnasused:

  • Mõlemad klassid HashMap ja TreeMap rakendavad liidesed Serializable ja Cloneable.
  • Nii HashMap kui ka TreeMap laiendavad AbstractMap klassi.
  • Nii HashMap kui ka TreeMap klassid töötavad võtmeväärtuste paaridel.
  • Nii HashMap kui ka TreeMap on sünkroniseerimata kogud.
  • Nii HashMap kui ka TreeMap ebaõnnestuvad kiiresti.

Mõlemad rakendused on osa kogumisraamistikust ja salvestavad andmeid võtme-väärtuste paarides.

Java-programm näitab HashMap ja TreeMap

Siin on java-programm, mis näitab, kuidas elemente pannakse ja hashimapi otsitakse:

package com.edubca.map;
import java.util.*;
class HashMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
HashMap hashmap =
new HashMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = hashmap.get(arr(i));
// If first occurrence of the element
if (hashmap.get(arr(i)) == null)
hashmap.put(arr(i), 1);
// If elements already present in hash map
else
hashmap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m:hashmap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test the above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)

Väljund:

Väljundi põhjal on selge, et hashmap ei säilita mingit korda. Siin on java-programm, mis näitab, kuidas elemente pannakse ja puukaardilt tõmmatakse.

Kood:

package com.edubca.map;
import java.util.*;
class TreeMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
TreeMap treemap =
new TreeMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = treemap.get(arr(i));
// If first occurrence of element
if (treemap.get(arr(i)) == null)
treemap.put(arr(i), 1);
// If elements already present in hash map
else
treemap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m: treemap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)

Väljund:

Väljundi põhjal on täheldatud, et võtmed sorteeritakse loomulikus järjekorras. Seega säilitab Treemap järjestatud järjekorra.

Erinevused HashMapi ja TreeMapi vahel (infograafika)

Allpool on toodud peamised erinevused HashMapi ja TreeMapi vahel

HashMap ja TreeMap peamised erinevused

Järgmised punktid on võtme erinevus HashMap ja TreeMap:

1. Struktuur ja rakendamine

Hash Map on räsitabelipõhine rakendus. See laiendab abstraktse kaardi klassi ja rakendab kaardiliidese. Hassi kaart töötab räsimise põhimõttel. Kaardi rakendamine toimib koppitud räsitabelina, kuid kui kopad on liiga suured, teisendatakse need puusõlmedeks, millel kõigil on sarnane struktuur nagu TreeMap-i sõlmedel. TreeMap laiendab abstraktse kaardi klassi ja rakendab navigeeritava kaardi liidese. Puukaardi aluseks olev andmestruktuur on punane-must puu.

2. Itereerimiskorraldus

Hash Mapi iteratsioonijärjestus on määratlemata, samas kui TreeMap elemendid on järjestatud loomulikus järjekorras või komparaatori abil täpsustatud järjekorras.

3. Sooritus

Kuna Hashmap on kiirustav rakendus, pakub see enamiku tavaliste toimingute jaoks konstantse aja jõudlust, mis võrdub O (1). Elemendi otsimine räsi kaardilt on O (1). Kuid kui hashmapi rakendatakse valesti, võib see põhjustada täiendavat mälukulu ja jõudluse halvenemist. Teisest küljest pakub TreeMap O-funktsiooni (log (n)). Kuna hashmap on rämpspõhine, nõuab see külgnevat mäluvahemikku, samas kui puukaart kasutab ainult üksuste hoidmiseks vajalikku mälumahtu. Seega on HashMap ajaliselt tõhusam kui puukaart, kuid puukaart on ruumisäästlikum kui HashMap.

4. Nullkäsitsemine

HashMap lubab peaaegu ühte nullvõtit ja paljusid nullväärtusi, samas kui puukaardis ei saa nulli võtmena kasutada, ehkki nullväärtused on lubatud. Kui null kasutatakse hashmapi võtmena, loobub see null-osuti erandist, kuna kasutab sisemiselt elementide sortimiseks meetodit Võrdle või Võrdle.

Tabeli võrdlus

Siin on võrdlustabel, milles on toodud erinevused hashmapi ja puukaardi vahel:

Võrdluse alusHashMapPuukaart
SüntaksAvalik klass HashMap laiendab AbstractMap rakendusi Map, Cloneable, SerializableAvaliku klassi TreeMap laiendab AbstractMapi rakendusiNavigableMap, kloonitavaid, seerialiseeritavaid
TellimineHashMap ei paku elementide tellimist.Elemendid tellitakse looduslikus või kohandatud järjekorras.
KiirusKiireAeglane
Nullvõtmed ja väärtusedVõimaldab peaaegu ühe klahvi nullväärtusena ja mitmekordse nullväärtusena.See ei luba võtmena nullit, vaid lubab mitut nullväärtust.
Mälu tarbimineHashMap tarbib rohkem mälu selle aluseks oleva räsitabeli tõttu.Tarbib vähem mälu võrreldes HashMapiga.
FunktsionaalsusPakub ainult põhifunktsiooneSee pakub rikkamaid funktsioone.
Kasutatud võrdlusmeetodPõhimõtteliselt kasutab võtmete võrdlemiseks meetodit equals ().Kasutab võtmete võrdlemiseks meetodit Võrdle () või VõrdleTo ().
Liides on rakendatudKaart, seerialiseeritav ja kloonitavNavigeeritav kaart, seerialiseeritav ja kloonitav
EtendusAnnab tulemuse O (1).Tagab O (log n) toimimise
Andmete struktuurKasutab räsitabelit andmestruktuurina.Kasutab punase-musta puu kasutamist andmete salvestamiseks.
Homogeensed ja heterogeensed elemendidSee võimaldab nii homogeenseid kui ka heterogeenseid elemente, kuna see ei teosta mingit sorteerimist.Sorteerimise käigus lubatakse ainult homogeenseid elemente.
Kasutage juhtumeidKasutatakse siis, kui me ei vaja võtme-väärtuse paare sorteeritud järjekorras.Kasutatakse siis, kui kaardil on vaja sorteerida võtme-väärtuse paarid.

Järeldus

Artiklist järeldatakse, et hashmap on Kaardi liidese üldotstarbeline teostus. See pakub O (1) jõudlust, samas kui Treemap pakub O (log (n)) jõudlust. Seega on HashMap tavaliselt kiirem kui TreeMap.

Soovitatavad artiklid

See on juhend HashMap vs TreeMap. Siin käsitleme HashMap vs TreeMap sissejuhatust, Hashmap ja Treemap erinevusi ning võrdlustabelit. Lisateavet leiate ka meie muudest soovitatud artiklitest -

  1. WebLogic vs JBoss
  2. Loend vs komplekt
  3. Git Too ja Git Pull
  4. Kafka vs säde | Peamised erinevused
  5. Kafka vs Kinesise 5 erinevust

Kategooria: