treemap java tutorial with java treemap examples
Questo tutorial Java TreeMap discute la classe TreeMap, l'iterazione, gli esempi di TreeMap, l'implementazione, Java Hashmap vs Treemap, i metodi API TreeMap ecc .:
Una struttura dati TreeMap è una raccolta che memorizza le coppie chiave-valore in un ordine ordinato in modo naturale. Una TreeMap fa parte del Java Collections Framework ed è un'implementazione della mappa.
=> Controlla TUTTI i tutorial Java qui.
Cosa imparerai:
Java TreeMap
Alcune delle principali caratteristiche di TreeMap in Java sono le seguenti:
- La classe TreeMap che implementa treemap in Java fa parte del pacchetto java.util. Implementa l'interfaccia Map.
- La classe TreeMap estende la classe AbstractMap e implementa anche l'interfaccia NavigableMap e SortedMap (indirettamente).
- TreeMap non è sincronizzato.
- Per impostazione predefinita, gli elementi TreeMap sono in ordine crescente per impostazione predefinita.
- TreeMap non consente la duplicazione di elementi.
- TreeMap consente valori nulli ma non chiavi nulle.
Il diagramma seguente mostra la gerarchia delle classi per la classe TreeMap.
Come già accennato, la classe TreeMap implementa un'interfaccia NavigableMap che a sua volta estende la classe SortedMap. SortedMap eredita ulteriormente l'interfaccia della mappa.
Dichiarazione della classe TreeMap
Di seguito viene fornita la dichiarazione generale della classe TreeMap:
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
dove K => tipo di chiavi gestito da TreeMap
V => tipo dei valori mappati
Esempio di TreeMap
Il programma seguente mostra un semplice esempio di una struttura dati TreeMap.
import java.util.*; class Main{ public static void main(String args()){ //declare a TreeMap and initialize it TreeMap cities_map=new TreeMap (); cities_map.put(100,'Pune'); cities_map.put(102,'Jaipur'); cities_map.put(101,'Hyderabad'); cities_map.put(103,'Bangaluru'); //print the TreeMap contents using forEach System.out.println('Contents of TreeMap:'); System.out.print('{'); for(Map.Entry entries:cities_map.entrySet()){ System.out.print(entries.getKey()+' = '+entries.getValue() + ' '); } System.out.println('}'); } }
Produzione:
Contenuto di TreeMap:
{100 = Pune 101 = Hyderabad 102 = Jaipur 103 = Bangaluru}
In questo programma, abbiamo definito un semplice oggetto TreeMap denominato, cities_map, e quindi utilizzando il metodo put, lo abbiamo inizializzato su coppie chiave-valore.
Quindi utilizziamo il metodo entrySet () della classe TreeMap e iteriamo su questo set utilizzando un ciclo forEach per stampare le coppie chiave-valore. Per stampare coppie chiave-valore, utilizziamo rispettivamente i metodi getKey () e getValue ().
qual è il miglior firewall gratuito per Windows 10
Costruttori e metodi API TreeMap
In questa sezione, discuteremo i vari costruttori e metodi forniti dalla classe TreeMap.
Costruttori
Prototipo del costruttore | Descrizione | |
---|---|---|
descendingMap | NavigableMap descendingMap () | Restituisce le coppie chiave-valore fornite in ordine inverso. |
TreeMap () | Costruttore predefinito per creare una TreeMap vuota con ordinamento naturale. | |
TreeMap (comparatore di confronto) | Costruisce una TreeMap vuota che viene ordinata in base al comparatore specificato. | |
TreeMap (Mappa m) | Costruisce una TreeMap e la inizializza con gli elementi della mappa specificata, m. Ordinare è naturale. | |
TreeMap (SortedMap m) | Costruisce una TreeMap e la inizializza con le voci SortedMap. L'ordine è lo stesso di SortMap. |
Metodi
Metodo | Metodo Prototipo | Descrizione |
---|---|---|
soffitto | Mappa Ingresso soffitto Ingresso (tasto K) | Restituisce la coppia chiave-valore minima in modo tale che la chiave sia maggiore o uguale alla chiave specificata; null se non è presente alcuna chiave |
soffittoKey | K soffittoKey (tasto K) | Restituisce la chiave che è minore e maggiore della chiave data; restituisce null se nessuna chiave. |
chiaro | void clear () | Elimina tutte le coppie chiave-valore dalla mappa ad albero. |
clone | Oggetto clone () | Crea una copia superficiale dell'istanza di TreeMap. |
comparatore | Comparatore comparatore () | Restituisce un comparatore utilizzato per disporre le chiavi. null se l'ordinamento è naturale |
descendingKeySet | NavigableSet descendingKeySet () | Restituisce la vista NavigableSet delle chiavi TreeMap in ordine inverso. |
firstEntry | Map.Entry firstEntry () | Restituisce la coppia chiave-valore minima. |
floorEntry | Mappa Ingresso Piano Ingresso (tasto K) | Restituisce la chiave più grande che è minore o uguale a una determinata chiave; null in assenza di tale chiave |
per ciascuno | void forEach (azione BiConsumer) | L'azione data viene eseguita per ogni voce nella TreeMap. |
headMap | SortedMap headMap (K toKey) | Utilizzato per restituire una coppia chiave-valore in modo tale che la chiave restituita sia strettamente minore di toKey |
headMap | NavigableMap headMap (K toKey, booleano incluso) | Restituisce coppie chiave-valore di quelle chiavi che sono minori di toKey o uguali a se incluso. |
upperEntry | Map.Entry higherEntry (tasto K) | Restituisce la chiave minima o null. La chiave restituita è strettamente maggiore della chiave fornita. |
upperKey | K maggiore (tasto K) | Restituisce la chiave se la mappatura è presente per la chiave specificata nella mappa ad albero. |
mazzo di chiavi | Imposta keySet () | Restituisce la raccolta di set delle chiavi nella TreeMap. |
lastEntry | Map.Entry lastEntry () | Restituisce la coppia chiave-valore in modo tale che la chiave sia la chiave più grande. Restituisce null se la chiave non esiste. |
lowerEntry | Map.Entry lowerEntry (tasto K) | Restituisce la coppia chiave-valore in modo che la chiave sia maggiore e strettamente minore della chiave data. Restituisce null se la chiave non esiste. |
lowerKey | K lowerKey (K key) | Restituisce la chiave più grande o null. La chiave restituita è rigorosamente inferiore alla chiave fornita. |
navigableKeySet | NavigableSet navigableKeySet () | Restituisce il 'NavigableSet' di chiavi nella TreeMap. |
pollFirstEntry | Map.Entry pollFirstEntry () | Rimuove e restituisce la coppia chiave-valore della chiave minore. |
pollLastEntry | Map.Entry pollLastEntry () | Rimuove e restituisce la coppia chiave-valore della chiave più grande. |
mettere | V put (tasto K, valore V) | Aggiunge la chiave e il valore dati alla TreeMap. |
metti tutto | void putAll (Mappa mappa) | Tutte le coppie chiave-valore dalla mappa data vengono copiate nella TreeMap. |
sostituire | V sostituire (tasto K, valore V) | Sostituisce o modifica il valore della chiave data con il valore specificato. |
sostituire | sostituzione booleana (K key, V oldValue, V newValue) | Sostituisce oldValue della chiave data con newValue. |
sostituisci tutto | void replaceAll (funzione BiFunction) | Richiama la funzione data e sostituisce tutte le voci con il risultato della funzione. |
subMap | NavigableMap subMap (K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | Restituisce le coppie chiave-valore di chiavi da 'fromKey' a 'toKey'. |
SortedMap | Mappa secondaria Mappa ordinata (K fromKey, K toKey) | Restituisce le coppie chiave-valore per l'intervallo daKey (incluso) a toKey (esclusivo). |
tailMap | SortedMap tailMap (K fromKey) | Restituisce coppie chiave-valore tali che le chiavi siano maggiori o uguali a fromKey. |
tailMap | NavigableMap tailMap (K fromKey, booleano incluso) | Restituisce coppie chiave-valore per le chiavi uguali a fromKey (inclusive = true) o maggiori di fromKey. |
contieneKey | booleano containsKey (chiave oggetto) | Controlla se esiste una mappatura per la chiave specificata nella mappa ad albero. Restituisce vero se sì. |
contieneValore | boolean containsValue (valore oggetto) | Verifica se è presente una chiave mappata con il valore specificato. Restituisce sì se vero. |
firstKey | K firstKey () | Restituisce la chiave più bassa o la prima chiave nella mappa ordinata |
ottenere | V get (Object key) | Recupera il valore mappato alla chiave specificata |
lastKey | K lastKey () | Restituisce l'ultima chiave o la chiave più alta nella mappa ordinata. |
rimuovere | V remove (Object key) | Elimina la coppia chiave-valore per la chiave specificata nella TreeMap |
entrySet | Impostato | Restituisce il set per la TreeMap data. |
taglia | int size () | Restituisce la dimensione o il numero totale di coppie chiave-valore nella TreeMap. |
valori | Valori di raccolta () | Restituisce la raccolta dei valori per TreeMap. |
Iterazione attraverso TreeMap
TreeMap è costituito da coppie chiave-valore. La classe TreeMap fornisce un metodo 'entrySet' che restituisce coppie chiave-valore nella mappa. Possiamo iterare attraverso queste voci usando il ciclo forEach e visualizzare chiavi e valori usando rispettivamente i metodi getKey () e getValue ().
Questo è mostrato nel seguente programma Java:
import java.util.Map; import java.util.TreeMap; class Main { public static void main(String() arg){ //declare and initialize TreeMap Map colorsTree = new TreeMap(); colorsTree.put('R', 'Red'); colorsTree.put('G', 'Green'); colorsTree.put('B', 'Blue'); colorsTree.put('M', 'Magenta'); System.out.println('The contents of TreeMap:'); // retrieve set of map entries using entrySet method for (Map.Entry Map_entry : colorsTree.entrySet()) //print key-value pairs using getKey() and getValue() System.out.println( '(' + Map_entry.getKey() + '=>' + Map_entry.getValue() + ')'); } }
Produzione:
I contenuti di TreeMap:
(B => Blue)
(G => Verde)
(M => Magenta)
(R => Rosso)
Implementazione di TreeMap in Java
Il seguente programma Java mostra il metodo principale della classe TreeMap discusso sopra.
import java.util.Map; import java.util.Map.Entry; import java.util.TreeMap; public class Main { public static void main(String() args) { //declare a TreeMap Object and initialize it with values TreeMap map = new TreeMap<>(); for(int i=1;i<=10;i++) { map.put(i, (i*i)+''); } System.out.println('Original Map:' + map); //lowerEntry, higherEntry Entry entry = map.lowerEntry(4); System.out.println('Closest Lower Entry than 4:'+entry); entry = map.higherEntry(4); System.out.println('Closest Higher Entry than 4:'+entry); System.out.println('Closest Lower key than 4 :'+map.lowerKey(4)); entry = map.floorEntry(6); System.out.println('Closest floor entry than 6: '+entry); entry = map.ceilingEntry(6); System.out.println('Closest ceiling Entry than 6 :'+entry); entry = map.firstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.lastEntry(); System.out.println('TreeMap Last Entry:'+entry); Map reversedMap = map.descendingMap(); System.out.println('Reversed TreeMap: '+reversedMap); //pollFirstEntry, pollLastEntry entry = map.pollFirstEntry(); System.out.println('TreeMap First Entry:'+entry); entry = map.pollLastEntry(); System.out.println('TreeMap Last Entry:'+entry); //subMap Map subMap = map.subMap(2, true, 6, true); System.out.println('Submap from 2 to 6: '+subMap); //headMap subMap = map.headMap(5, true); System.out.println('HeadMap: '+subMap); //tailMap subMap = map.tailMap(5, true); System.out.println('TailMap: '+subMap); } }
Produzione:
Mappa originale: {1 = 1, 2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81, 10 = 100}
Entrata inferiore più vicina di 4: 3 = 9
Entrata più vicina più alta di 4: 5 = 25
Tasto più vicino inferiore di 4: 3
Ingresso al piano più vicino di 6: 6 = 36
Ingresso soffitto più vicino di 6: 6 = 36
Primo ingresso TreeMap: 1 = 1
Ultimo ingresso TreeMap: 10 = 100
Mappa dell'albero invertita: {10 = 100, 9 = 81, 8 = 64, 7 = 49, 6 = 36, 5 = 25, 4 = 16, 3 = 9, 2 = 4, 1 = 1}
Primo ingresso TreeMap: 1 = 1
Ultimo ingresso TreeMap: 10 = 100
Mappa secondaria da 2 a 6: {2 = 4, 3 = 9, 4 = 16, 5 = 25, 6 = 36}
HeadMap: {2 = 4, 3 = 9, 4 = 16, 5 = 25}
TailMap: {5 = 25, 6 = 36, 7 = 49, 8 = 64, 9 = 81}
Ordina TreeMap per valore
Per impostazione predefinita, TreeMap è ordinato in base alle chiavi in base all'ordinamento naturale. Ma se vogliamo ordinare la TreeMap in base ai valori, dobbiamo utilizzare il comparatore per definire l'ordinamento.
Il seguente programma Java ordina la TreeMap in base al valore.
import java.util.*; class Main { //Method for sorting the TreeMap based on values public static > Map sortTreeMap(final Map map) { //define a comaprator to sort TreeMap on values Comparator valueComparator = new Comparator() { public int compare(K k1, K k2) { int compare = map.get(k1).compareTo(map.get(k2)); if (compare == 0) return 1; else return compare; } }; //use the comparator to sort the TreeMap and return sortedTreeMap Map sortedTreeMap = new TreeMap(valueComparator); sortedTreeMap.putAll(map); return sortedTreeMap; } public static void main(String args()) { //define and initialize the TreeMap TreeMap treemap = new TreeMap(); treemap.put('R', 'Red'); treemap.put('G', 'Green'); treemap.put('B', 'Blue'); treemap.put('C', 'Cyan'); treemap.put('M', 'Magenta'); // call method sortTreeMap to sort the TreeMap Map sortedTreeMap = sortTreeMap(treemap); // Retrieve set of the entries on the sorted map Set set = sortedTreeMap.entrySet(); System.out.println('The sorted TreeMap based on Values:'); // Now define iterator on this set Iterator i = set.iterator(); // Print TreeMap elements while(i.hasNext()) { Map.Entry me = (Map.Entry)i.next(); System.out.print(me.getKey() + ': '); System.out.println(me.getValue()); } } }
Produzione:
La TreeMap ordinata in base ai valori:
B: blu
C: ciano
G: verde
M: Magenta
R: Rosso
Java Hashmap vs Treemap
Vediamo alcune delle principali differenze tra una HashMap e una TreeMap.
La tabella seguente mostra queste differenze.
HashMap | TreeMap |
---|---|
HashMap è molto più veloce di TreeMap. | TreeMap è più lento |
Implementa l'interfaccia Map. | Implementa l'interfaccia NavigableMap. |
Utilizza la tecnica di implementazione dell'hashing | Usa un albero rosso-nero per l'implementazione |
Non mantiene alcun ordine di contenimento degli elementi | Le chiavi nella mappa ad albero sono già ordinate secondo l'ordine naturale |
Consente una chiave null e molti valori null | Consente solo valori nulli ma le chiavi non possono essere nulle |
Esegue le operazioni di base, mette e arriva a tempo costante. | Prenditi il tempo di log (n) per eseguire operazioni put e get |
HashMap ha funzionalità limitate. | La classe TreeMap fornisce molte funzionalità aggiuntive che ci aiutano a manipolare la struttura dei dati. |
Utilizza il metodo equals () per il confronto. | Utilizza il metodo compareTo () per il confronto. |
Domande frequenti
D # 1) Cos'è TreeMap in Java?
Risposta: TreeMap in Java è una raccolta di coppie chiave-valore già ordinate. Utilizza un albero rosso-nero per scopi di implementazione. Java TreeMap implementa l'interfaccia NavigableMap oltre all'interfaccia Map ed estende anche la classe AbstractMap.
Q # 2) Perché usiamo TreeMap in Java?
Risposta: TreeMap viene utilizzato in Java per implementare le interfacce Map e NavigableMap e la classe AbstractMap. Poiché le chiavi TreeMap sono ordinate secondo l'ordine naturale, possiamo utilizzare questa struttura dati per memorizzare la struttura delle directory, le gerarchie ad albero, ecc.
quale vr funziona con xbox one
Q # 3) Quale è meglio - HashMap o TreeMap?
Risposta: HashMap è migliore di TreeMap. HashMap impiega sempre un tempo costante per eseguire le operazioni di base mentre TreeMap impiega il tempo di log (n) per eseguire queste operazioni. Quando sono coinvolti oggetti di dati più grandi, HashMap funziona più velocemente rispetto a TreeMap.
Q # 4) TreeMap è ordinato?
Risposta: Sì, le voci chiave in TreeMap sono ordinate in base all'ordine naturale. La classe TreeMap ci consente anche di utilizzare un comparatore personalizzato per ordinare la TreeMap in base ai valori.
Q # 5) TreeMap è thread-safe?
Risposta: No, TreeMap non è una raccolta thread-safe.
Conclusione
In questo tutorial, abbiamo discusso in dettaglio TreeMap in Java. TreeMap è una raccolta di coppie chiave-valore che implementa l'interfaccia della mappa. Implementa anche un'interfaccia NavigableMap. Gli elementi della TreeMap sono unici e non sono consentiti duplicati.
Abbiamo visto i costruttori e i metodi di TreeMap. Abbiamo anche implementato il programma TreeMap e dimostrato i principali metodi della classe TreeMap. Quindi abbiamo discusso le differenze tra HashMap e TreeMap.
=> Visita qui per vedere la serie di formazione Java per tutti.
Lettura consigliata
- TreeSet in Java: tutorial con esempi di programmazione
- Albero di ricerca binario in Java - Implementazione ed esempi di codice
- Tutorial JAVA per principianti: oltre 100 tutorial video Java pratici
- Tutorial sul metodo Java String contains () con esempi
- Cos'è Java Vector | Tutorial Java Vector Class con esempi
- Jagged Array in Java - Tutorial con esempi
- Tutorial di classe per scanner Java con esempi
- Tutorial Java String | Metodi Java String con esempi