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 alus | HashMap | Puukaart |
Süntaks | Avalik klass HashMap laiendab AbstractMap rakendusi Map, Cloneable, Serializable | Avaliku klassi TreeMap laiendab AbstractMapi rakendusiNavigableMap, kloonitavaid, seerialiseeritavaid |
Tellimine | HashMap ei paku elementide tellimist. | Elemendid tellitakse looduslikus või kohandatud järjekorras. |
Kiirus | Kiire | Aeglane |
Nullvõtmed ja väärtused | Võimaldab peaaegu ühe klahvi nullväärtusena ja mitmekordse nullväärtusena. | See ei luba võtmena nullit, vaid lubab mitut nullväärtust. |
Mälu tarbimine | HashMap tarbib rohkem mälu selle aluseks oleva räsitabeli tõttu. | Tarbib vähem mälu võrreldes HashMapiga. |
Funktsionaalsus | Pakub ainult põhifunktsioone | See pakub rikkamaid funktsioone. |
Kasutatud võrdlusmeetod | Põhimõtteliselt kasutab võtmete võrdlemiseks meetodit equals (). | Kasutab võtmete võrdlemiseks meetodit Võrdle () või VõrdleTo (). |
Liides on rakendatud | Kaart, seerialiseeritav ja kloonitav | Navigeeritav kaart, seerialiseeritav ja kloonitav |
Etendus | Annab tulemuse O (1). | Tagab O (log n) toimimise |
Andmete struktuur | Kasutab räsitabelit andmestruktuurina. | Kasutab punase-musta puu kasutamist andmete salvestamiseks. |
Homogeensed ja heterogeensed elemendid | See võimaldab nii homogeenseid kui ka heterogeenseid elemente, kuna see ei teosta mingit sorteerimist. | Sorteerimise käigus lubatakse ainult homogeenseid elemente. |
Kasutage juhtumeid | Kasutatakse 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 -
- WebLogic vs JBoss
- Loend vs komplekt
- Git Too ja Git Pull
- Kafka vs säde | Peamised erinevused
- Kafka vs Kinesise 5 erinevust