Java HashMap un TreeMap abas ir Java Collections ietvara klases. Java Map ieviešana parasti darbojas kā segmentu jaucēj tabula. Kad spaiņi kļūst pārāk lieli, tie tiek pārveidoti par mezgliem TreeNodes , katrs strukturēts līdzīgi kā šeit esošajiem java.util.TreeMap .
HashMap
HashMap iekārtas Karte, klonējama un Serializējams saskarne. Tas pagarina AbstractMap klasē. Tas pieder java.util iepakojums.
- HashMap satur vērtību, kuras pamatā ir atslēga.
- Tam var būt viena nulles atslēga un vairākas nulles vērtības.
- HashMap atkārtošanas laikā neuztur kārtību.
- Tas satur unikālus elementus.
- Tas darbojas pēc jaukšanas principa.
TreeMap
TreeMap klase paplašinās AbstractMap klase un darbarīki Navigējamā karte , Klonējams , un Serializējams saskarne. TreeMap ir piemērs a Sakārtota karte . To īsteno sarkans-melnais koks, kas nozīmē, ka taustiņu secība ir sakārtota.
- TreeMap satur arī vērtību, kuras pamatā ir atslēga.
- TreeMap ir sakārtots pēc taustiņiem.
- Tas satur unikālus elementus.
- Tam nevar būt nulles atslēga, bet tai ir vairākas nulles vērtības.
- Atslēgas ir augošā secībā.
- Tas saglabā objektu koka struktūrā.
Līdzības starp HashMap un TreeMap
- Abas klases pagarina AbstractMap klasē.
- Karte ir objekts, kas glabājas atslēgas vērtība pāriem. Atslēgu un vērtību pārī katra atslēga ir unikāla, taču to vērtības var būt dublikāts .
- Abas klases apzīmē kartēšanu no taustiņu uz vērtības .
- Abas kartes nav sinhronizēts .
- Kartes lietošana likt () metode elementa pievienošanai kartei.
- Iterators izmet a ConcurrentModificationException ja karte jebkādā veidā tiek pārveidota.
Galvenā atšķirība starp HashMap un TreeMap ir:
HashMap nesaglabā iterācijas secību, kamēr TreeMap saglabājiet pasūtījumu, izmantojot Salīdzinot ar() metode vai a salīdzinātājs iestatīts TreeMap konstruktorā.
Šajā tabulā ir aprakstītas atšķirības starp HashMap un TreeMap.
Pamats | HashMap | TreeMap |
---|---|---|
Definīcija | Java HashMap ir uz hashtable balstīta kartes saskarnes ieviešana. | Java TreeMap ir uz koka struktūru balstīta kartes saskarnes ieviešana. |
Interfeisa iekārtas | HashMap iekārtas Karte, klonējama , un Serializējams saskarne. | TreeMap iekārtas Navigējama karte, klonējama , un Serializējams saskarne. |
Null taustiņi/ vērtības | HashMap ļauj a viens nulles atslēga un vairākas nulles vērtības. | TreeMap neļauj null atslēgas, bet var būt vairākas nulles vērtības. |
Homogēns/ Heterogēns | HashMap pieļauj neviendabīgus elementus, jo tas neveic taustiņu šķirošanu. | TreeMap ļauj izmantot viendabīgas vērtības kā atslēgu šķirošanas dēļ. |
Performance | HashMap ir ātrāk nekā TreeMap, jo tā nodrošina pastāvīgu veiktspēju, kas ir O(1) tādām pamatoperācijām kā get() un put(). | TreeMap ir lēns salīdzinājumā ar HashMap, jo tas nodrošina O(log(n)) veiktspēju lielākajai daļai darbību, piemēram, add(), remove() un satur(). |
Datu struktūra | HashMap klase izmanto hash tabula . | TreeMap iekšēji izmanto a Sarkans-Melns koks, kas ir pašbalansējošs binārais meklēšanas koks. |
Salīdzināšanas metode | Tā izmanto vienāds () metode Objekts klasē, lai salīdzinātu atslēgas. Map klases metode equals() to ignorē. | Tas izmanto Salīdzinot ar() atslēgu salīdzināšanas metode. |
Funkcionalitāte | HashMap klase satur tikai tādas pamatfunkcijas kā get(), put(), KeySet() utt. | TreeMap klase ir bagāta ar funkcionalitāti, jo tajā ir tādas funkcijas kā: tailMap(), firstKey(), pēdējaisKey(), pollFirstEntry(), pollLastEntry() . |
Elementu secība | HashMap neuztur nekādu kārtību. | Elementi ir sakārtoti dabiskā kārtība (augošā veidā). |
Lietojumi | HashMap ir jāizmanto, ja nav nepieciešams atslēgas-vērtības pāris sakārtotā secībā. | TreeMap ir jāizmanto, ja mums ir nepieciešams atslēgas un vērtības pāris sakārtotā (augošā) secībā. |
HashMap vs TreeMap piemērs
Nākamajā piemērā mēs varam novērot, ka HashMap elementi ir nejaušā secībā, bet TreeMap elementi ir sakārtoti augošā secībā.
import java.util.Map; import java.util.HashMap; import java.util.TreeMap; public class HashMapVsTreeMapExample { public static void main(String args[]) { /*------------HashMap implementation----------------*/ Map hm=new HashMap(); //adding elements to the HashMap hm.put(9, 'Red'); hm.put(12, 'Black'); hm.put(6, 'Green'); hm.put(19, 'White'); System.out.println('HashMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: hm.entrySet()) { //getting keys and values using method System.out.println(entry.getKey() + ' = ' +entry.getValue()); } /*------------TreeMap implementation----------------*/ Map tm=new TreeMap(); //adding elements to the TreeMap tm.put(9, 'Red'); tm.put(12, 'Black'); tm.put(6, 'Green'); tm.put(19, 'White'); System.out.println('TreeMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: tm.entrySet()) { //getting keys and values using method //prints list in sorted order System.out.println(entry.getKey() + ' = ' +entry.getValue()); } } }
Izvade: