Differenza tra HashMap, LinkedHashMap e TreeMap


958

Qual è la differenza tra HashMap, LinkedHashMape TreeMapin Java? Non vedo alcuna differenza nell'output come tutti e tre hanno keySete values. Cosa sono le Hashtables?

Map m1 = new HashMap();
m1.put("map", "HashMap");
m1.put("schildt", "java2");
m1.put("mathew", "Hyden");
m1.put("schildt", "java2s");
print(m1.keySet()); 
print(m1.values()); 

SortedMap sm = new TreeMap();
sm.put("map", "TreeMap");
sm.put("schildt", "java2");
sm.put("mathew", "Hyden");
sm.put("schildt", "java2s");
print(sm.keySet()); 
print(sm.values());

LinkedHashMap lm = new LinkedHashMap();
lm.put("map", "LinkedHashMap");
lm.put("schildt", "java2");
lm.put("mathew", "Hyden");
lm.put("schildt", "java2s");
print(lm.keySet()); 
print(lm.values());

Risposte:


1161

Tutte e tre le classi implementano l' Mapinterfaccia e offrono principalmente la stessa funzionalità. La differenza più importante è l'ordine in cui avverrà l'iterazione attraverso le voci:

  • HashMapnon fornisce alcuna garanzia circa l'ordine di iterazione. Può (e cambierà) completamente anche quando vengono aggiunti nuovi elementi.
  • TreeMapeseguirà l'iterazione secondo l '"ordinamento naturale" delle chiavi secondo il loro compareTo()metodo (o fornito esternamente Comparator). Inoltre, implementa l' SortedMapinterfaccia, che contiene metodi che dipendono da questo tipo di ordinamento.
  • LinkedHashMap itererà nell'ordine in cui le voci sono state inserite nella mappa

"Hashtable" è il nome generico per le mappe basate su hash. Nel contesto dell'API Java, Hashtableè una classe obsoleta dai tempi di Java 1.1 prima dell'esistenza del framework delle raccolte. Non dovrebbe più essere utilizzato, poiché la sua API è ingombra di metodi obsoleti che duplicano la funzionalità e i suoi metodi sono sincronizzati (che può ridurre le prestazioni ed è generalmente inutile). Utilizzare ConcurrentHashMap invece di Hashtable.


2
Cos'è quindi Map in realtà e qual è la differenza tra Map, HashMap e Hashtables.
Kevin,

5
@theband: Map è un'interfaccia. HashMap e Hashtable lo implementano entrambi; come ho scritto, Hashtable è una classe legacy.
Michael Borgwardt,

98
Una differenza notevole tra Hashtablee HashMapè che in un Hashtable, "né la chiave né il valore possono essere nulli". Questo vincolo non esiste su quest'ultimo.
aioobe,

4
@AshkanN: Sì, in effetti quelli sono i metodi standard per implementare l'ordinamento. TreeMap ha un costruttore che utilizza un comparatore e, se non ne viene fornito nessuno, si aspetta tutti gli oggetti aggiunti per implementare Comparable.
Michael Borgwardt,

4
È possibile scegliere se si desidera l'iterazione LinkedHashMap in ordine di inserimento o ordine di accesso.
lbalazscs,

1608

Preferisco la presentazione visiva:

╔══════════════╦═════════════════════╦═══════════════════╦═════════════════════╗
║   Property   ║       HashMap       ║      TreeMap      ║     LinkedHashMap   ║
╠══════════════╬═════════════════════╬═══════════════════╬═════════════════════╣
║ Iteration    ║  no guarantee order ║ sorted according  ║                     ║
║   Order      ║ will remain constant║ to the natural    ║    insertion-order  ║
║              ║      over time      ║    ordering       ║                     ║
╠══════════════╬═════════════════════╬═══════════════════╬═════════════════════╣
║  Get/put     ║                     ║                   ║                     ║
║   remove     ║         O(1)        ║      O(log(n))    ║         O(1)        ║
║ containsKey  ║                     ║                   ║                     ║
╠══════════════╬═════════════════════╬═══════════════════╬═════════════════════╣
║              ║                     ║   NavigableMap    ║                     ║
║  Interfaces  ║         Map         ║       Map         ║         Map         ║
║              ║                     ║    SortedMap      ║                     ║
╠══════════════╬═════════════════════╬═══════════════════╬═════════════════════╣
║              ║                     ║                   ║                     ║
║     Null     ║       allowed       ║    only values    ║       allowed       ║
║ values/keys  ║                     ║                   ║                     ║
╠══════════════╬═════════════════════╩═══════════════════╩═════════════════════╣
║              ║   Fail-fast behavior of an iterator cannot be guaranteed      ║
║   Fail-fast  ║ impossible to make any hard guarantees in the presence of     ║
║   behavior   ║           unsynchronized concurrent modification              ║
╠══════════════╬═════════════════════╦═══════════════════╦═════════════════════╣
║              ║                     ║                   ║                     ║
║Implementation║      buckets        ║   Red-Black Tree  ║    double-linked    ║
║              ║                     ║                   ║       buckets       ║
╠══════════════╬═════════════════════╩═══════════════════╩═════════════════════╣
║      Is      ║                                                               ║
║ synchronized ║              implementation is not synchronized               ║
╚══════════════╩═══════════════════════════════════════════════════════════════╝

14
Oltre all'ordine di inserimento, LinkedHashMap supporta anche l'ordine di accesso (quando si utilizza il costruttore con il parametro booleano dell'ordine di accesso).
Eyal Schneider,

5
Benne collegate doppie? Penso che aggiunga un inutile sovraccarico di ricerca del bucket per le operazioni di inserimento / rimozione (perché deve cercare il bucket giusto per inserire l'oggetto). Ho sempre pensato che le implementazioni di LinkedHashMap sarebbero simili a quelle di una mappa ma con un piccolo sovraccarico di "elenco di voci" (può essere come un elenco collegato) utilizzato per scopi di iterazione. Sei sicuro, Shevchyk? Se sì, puoi spiegarmi o darmi alcuni link online a sostegno della tua affermazione?
Sai Dubbaka,

5
@SaiDubbaka LinkedHashMap ha le benne doppie collegate MA ANCHE la tabella delle benne HashMap. Non lo sta sostituendo. Ciò significa che l'accesso ai bucket avviene come in HashMap, poiché l'elenco collegato è presente solo per l'iterazione nell'ordine di inserimento (o nell'ordine di accesso).
Gerardo Lastra,

5
Vale la pena ricordare che O (1) è lo scenario migliore (che di solito non chiameremmo O, vedi questa domanda )
Sebastian S

4
Vale anche la pena notare che O (1) non è sempre migliore di O (log n); se hai una chiave molto lunga, qualcosa basato sui BST potrebbe essere molto più veloce di qualcosa che deve eseguire un hash O (n) sull'intera chiave prima di poter fare qualsiasi cosa.
Fondi Monica's Lawsuit

65

Tutti e tre rappresentano il mapping da chiavi univoche a valori e quindi implementano l' interfaccia Mappa .

  1. HashMap è una mappa basata su hashing delle chiavi. Supporta O (1) operazioni get / put. Le chiavi devono avere implementazioni coerenti hashCode()eequals() perché ciò funzioni.

  2. LinkedHashMap è molto simile a HashMap, ma aggiunge consapevolezza all'ordine in cui gli elementi vengono aggiunti (o accessibili), quindi l'ordine di iterazione è uguale all'ordine di inserimento (o all'ordine di accesso, a seconda dei parametri di costruzione).

  3. TreeMap è una mappatura basata su alberi. Le sue operazioni put / get richiedono tempo O (log n). Richiede che gli articoli abbiano un meccanismo di confronto, sia con Comparable che Comparator. L'ordine di iterazione è determinato da questo meccanismo.


1
Quindi, se capisco correttamente, l'unica differenza tra LinkedHashMap e TreeMap è la prestazione, dato che l'ordine di inserimento è lo stesso di quello naturale?
Moshe Shaham,

19
@MosheShaham Come ha detto nel n. 2: itererà LinkedHashMapnell'ordine di inserimento, non nell'ordine naturale. Quindi, se aggiungi (2,5,3)a LinkedHashMape fai uno per ciascuno su di esso, tornerà 2,5,3. Se fosse 2,5,3per un TreeMap, tornerà 2,3,5.
grinch

2
La mappa ad albero ha anche molti altri trucchi interessanti. Come le mappe della testa e della coda.
Thomas Ahle,

private TreeMap <String, Integer> mySection2 = new TreeMap <> (); mySection2.put ("abc1", 2); mySection2.put ( "ABC2", 5); mySection2.put ( "ABC3", 3); for (Numero intero x: mySection2.values ​​()) {Log.e ("LOG", "TreeMap ====" + x); } Questo mi sta dando lo stesso ordine in cui sono stati inseriti gli articoli? Per favore, suggerisci come è diverso da LinkedHashMaps?
B.shruti,

2
@ B.shruti: questo perché l'ordine di inserimento corrisponde all'ordine lessicografico delle chiavi ("abc1", "abc2", "abc3"). Se si inserisce in un ordine diverso, il codice continuerà a scorrere secondo l'ordine lessicografico.
Eyal Schneider,

47

Vedi dove si trova ciascuna classe nella gerarchia di classi nel seguente diagramma ( più grande ). TreeMap implementa SortedMape NavigableMapmentre HashMapno.

HashTableè obsoleto e ConcurrentHashMapdeve essere utilizzata la classe corrispondente . inserisci qui la descrizione dell'immagine


38

HashMap

  • Ha valori di coppia (chiavi, valori)
  • NO valori chiave di duplicazione
  • non ordinato non ordinato
  • consente una chiave null e più di un valore null

HashTable

  • come la mappa hash
  • non consente chiavi null e valori null

LinkedHashMap

  • Viene ordinata la versione dell'implementazione della mappa
  • Basato su elenco collegato e strutture di dati di hashing

TreeMap

  • Versione ordinata e ordinata
  • basato su strutture di dati di hashing

3
Anche HashTable è sincronizzato. Comunque, mi piace la tua risposta, pulita e chiara.
Surasin Tancharoen,

35

Solo qualche ulteriore input dalla mia esperienza con le mappe, su quando avrei usato ciascuno di essi:

  • HashMap - Utile soprattutto quando si cerca un'implementazione dalle prestazioni migliori (veloce).
  • TreeMap (interfaccia SortedMap) - Utile soprattutto quando sono in grado di ordinare o scorrere le chiavi in ​​un ordine particolare che definisco.
  • LinkedHashMap: unisce i vantaggi di un ordine garantito da TreeMap senza il costo aggiuntivo di gestione di TreeMap. (È quasi veloce come la HashMap). In particolare, LinkedHashMap fornisce anche un ottimo punto di partenza per la creazione di un oggetto Cache sostituendo il removeEldestEntry()metodo. Ciò consente di creare un oggetto Cache in grado di far scadere i dati utilizzando alcuni criteri definiti dall'utente.

10
Per essere precisi, TreeMap non mantiene gli elementi in ordine. Mantiene le chiavi in ​​ordine.
LS

17

Tutte e tre le classi HashMap, TreeMape LinkedHashMapimplementa java.util.Mapl'interfaccia, e rappresenta la mappatura da chiave unica di valori.

HashMap

  1. A HashMapcontiene valori basati sulla chiave.

  2. Contiene solo elementi unici.

  3. Può avere una chiave null e più valori null.

  4. Non mantiene alcun ordine .

    public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable

LinkedHashMap

  1. A LinkedHashMapcontiene valori basati sulla chiave.
  2. Contiene solo elementi unici.
  3. Può avere una chiave null e più valori null.
  4. È lo stesso di HashMap invece mantiene l'ordine di inserimento . // Vedi la decelerazione della classe di seguito

    public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>

TreeMap

  1. A TreeMapcontiene valori basati sulla chiave. Implementa l'interfaccia NavigableMap ed estende la classe AbstractMap.
  2. Contiene solo elementi unici.
  3. Non può avere una chiave null ma può avere più valori null.
  4. È lo stesso che HashMapinvece mantiene l' ordine crescente (Ordinato usando l'ordine naturale della sua chiave.).

    public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, Serializable

tabella hash

  1. Una Hashtable è una matrice di elenco. Ogni elenco è noto come un bucket. La posizione del bucket viene identificata chiamando il metodo hashcode (). Un Hashtable contiene valori basati sulla chiave.
  2. Contiene solo elementi unici.
  3. Potrebbe non avere alcuna chiave o valore null.
  4. È sincronizzato .
  5. È una classe legacy.

    public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, Serializable

Rif: http://javarevisited.blogspot.in/2015/08/difference-between-HashMap-vs-TreeMap-vs-LinkedHashMap-Java.html


La notazione big-O di HashMap non dovrebbe essere O (1). Questo è il caso migliore e gli hashtable hanno O (n) come scenario peggiore. Questo è supportato dal tuo link.
Haakon Løtveit,


@ HaakonLøtveit Suggerirò anche di cercare il codice attuale qui - grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/…
roottraveller

Che ANCORA dice che è O (n) nel peggiore dei casi. È un concetto matematico e non puoi dire che è O (1), a meno che non sia effettivamente O (1). Assumi anche alcune funzioni di hashing davvero buone qui. Voglio dire, potremmo usare qualcosa come la classe TerribleHashKey {@Override hashCode () {return 4; / * Determinato dal lancio corretto dei dadi * /}} e usalo come chiave per altre cose divertenti. Avere un'alta probabilità di O (1) e avere O (1) non è la stessa. Le persone vengono qui per chiedere aiuto con i compiti. Non roviniamo i loro voti ..;)
Haakon Løtveit l'

E vale la pena notare che in Java 8 hai il caso peggiore di O (log (n)) se hai più di 8 bucket, vedi grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk / ... per dettagli al riguardo.
Haakon Løtveit,

14

HashMap non fornisce assolutamente garanzie sull'ordine di iterazione. Può (e cambierà) completamente anche quando vengono aggiunti nuovi elementi. TreeMap eseguirà l'iterazione in base al "ordinamento naturale" delle chiavi in ​​base al loro metodo compareTo () (o un comparatore fornito esternamente). Inoltre, implementa l'interfaccia SortedMap, che contiene metodi che dipendono da questo ordinamento. LinkedHashMap eseguirà l'iterazione nell'ordine in cui le voci sono state inserite nella mappa

Guarda come le prestazioni variano .. inserisci qui la descrizione dell'immagine

Mappa ad albero che è un'implementazione della mappa ordinata. La complessità dell'operazione put, get e IncludesKey è O (log n) dovuta all'ordinamento naturale


9

@Amit: SortedMapè un'interfaccia mentre TreeMapè una classe che implementa l' SortedMapinterfaccia. Ciò significa che se segue il protocollo che SortedMapchiede ai suoi implementatori di fare. Un albero a meno che non sia implementato come albero di ricerca, non può fornirti dati ordinati perché l'albero può essere qualsiasi tipo di albero. Quindi, per far funzionare TreeMap come Ordinato, implementa SortedMap (ad esempio, Albero di ricerca binario - BST, BST bilanciato come AVL e RB Tree, persino Albero di ricerca ternario - utilizzato principalmente per ricerche iterative in modo ordinato).

public class TreeMap<K,V>
extends AbstractMap<K,V>
implements SortedMap<K,V>, Cloneable, Serializable

In NUT-SHELL HashMap: fornisce i dati in O (1), nessun ordine

TreeMap : fornisce i dati in O (log N), base 2. con le chiavi ordinate

LinkedHashMap: è una tabella hash con la lista di collegamenti (pensate alla indicizzata-SkipList) per archiviare i dati nel modo in cui vengono inseriti nella struttura. Più adatto per implementare LRU (usato meno di recente).


6

Di seguito sono riportate le principali differenze tra HashMap e TreeMap

  1. HashMap non mantiene alcun ordine. In altre parole, HashMap non fornisce alcuna garanzia che l'elemento inserito per primo verrà stampato per primo, dove, proprio come TreeSet, anche gli elementi TreeMap sono ordinati in base all'ordinamento naturale dei suoi elementi

  2. L'implementazione HashMap interna utilizza Hashing e TreeMap utilizza internamente l'implementazione dell'albero Red-Black.

  3. HashMap può memorizzare una chiave null e molti valori null .reeMap non può contenere chiavi null ma può contenere molti valori null.

  4. HashMap richiede prestazioni di tempo costanti per le operazioni di base come get e put, ovvero O (1). Secondo i documenti Oracle, TreeMap fornisce un costo di log (n) tempo garantito per il metodo get e put.

  5. HashMap è molto più veloce di TreeMap, poiché il tempo di prestazioni di HashMap è costante rispetto al tempo di log TreeMap per la maggior parte delle operazioni.

  6. HashMap utilizza il metodo equals () a confronto, mentre TreeMap utilizza il metodo compareTo () per mantenere l'ordinamento.

  7. HashMap implementa l'interfaccia Map mentre TreeMap implementa l'interfaccia NavigableMap.


5

Queste sono implementazioni diverse della stessa interfaccia. Ogni implementazione presenta alcuni vantaggi e alcuni svantaggi (inserimento rapido, ricerca lenta) o viceversa.

Per i dettagli, guarda il javadoc di TreeMap , HashMap , LinkedHashMap .


Cosa sono effettivamente gli Hashtables e cosa lo differenzia da una mappa.
Kevin,

5

La mappa hash non mantiene l'ordine di inserimento.
Esempio. Hashmap Se si inseriscono le chiavi come

1  3
5  9
4   6
7   15
3   10

Può archiviarlo come

4  6
5  9
3  10
1  3
7  15

Hashmap collegata mantiene l'ordine di inserimento.

Esempio.
Se si stanno inserendo le chiavi

1  3
5  9
4   6
7   15
3   10

Lo memorizzerà come

1  3
5  9
4   6
7   15
3   10

lo stesso che inseriamo.

La mappa ad albero memorizza i valori in Ordine crescente di chiavi. Esempio.
Se si stanno inserendo le chiavi

1  3
5  9
4   6
7   15
3   10

Lo memorizzerà come

1  3
3  10
4   6
5   9
7   15

4
  • HashMap:

    • L'ordine non mantiene
    • Più veloce di LinkedHashMap
    • Utilizzato per archiviare un mucchio di oggetti
  • LinkedHashMap:

    • L'ordine di inserimento di LinkedHashMap verrà mantenuto
    • Più lento di HashMap e più veloce di TreeMap
    • Se si desidera mantenere un ordine di inserzione, utilizzare questo.
  • TreeMap:

    • TreeMap è una mappatura basata su alberi
    • TreeMap seguirà il naturale ordinamento della chiave
    • Più lento di HashMap e LinkedHashMap
    • Utilizzare TreeMap quando è necessario mantenere un ordinamento naturale (predefinito)

1

Tutti offrono una mappa chiave-> valore e un modo per scorrere le chiavi. La distinzione più importante tra queste classi sono le garanzie temporali e l'ordinamento delle chiavi.

  1. HashMap offre 0 (1) ricerca e inserimento. Se si scorre attraverso le chiavi, tuttavia, l'ordinamento delle chiavi è essenzialmente arbitrario. È implementato da una serie di elenchi collegati.
  2. TreeMap offre la ricerca e l'inserimento di O (log N). Le chiavi sono ordinate, quindi se è necessario scorrere le chiavi in ​​ordine ordinato, è possibile. Ciò significa che le chiavi devono implementare l'interfaccia Comparable.TreeMap è implementata da un albero rosso-nero.
  3. LinkedHashMap offre 0 (1) ricerca e inserimento. Le chiavi sono ordinate in base al loro ordine di inserimento. È implementato da bucket doppiamente collegate.

Immagina di aver passato una TreeMap vuota, HashMap e LinkedHashMap nella seguente funzione:

void insertAndPrint(AbstractMap<Integer, String> map) {
  int[] array= {1, -1, 0};
  for (int x : array) {
    map.put(x, Integer.toString(x));
  }
  for (int k: map.keySet()) {
   System.out.print(k + ", ");
  }
}

L'output per ciascuno sarà simile ai risultati seguenti.

Per HashMap, nei miei test l'output era {0, 1, -1}, ma poteva essere qualsiasi ordinamento. Non esiste alcuna garanzia per l'ordinazione.
Treemap, l'output era, {-1, 0, 1}
LinkedList, l'output era, {1, -1, 0}


1

Mentre ci sono molte risposte eccellenti qui, vorrei presentare la mia tabella che descrive le varie Mapimplementazioni in bundle con Java 11.

Possiamo vedere queste differenze elencate nel grafico della tabella:

  • HashMapè lo scopo generale Map comunemente usato quando non hai esigenze particolari.
  • LinkedHashMapsi estende HashMap, aggiungendo questo comportamento: mantiene un ordine, l' ordine in cui le voci sono state originariamente aggiunte . La modifica del valore per l'immissione del valore-chiave non modifica la sua posizione nell'ordine.
  • TreeMapAnche mantiene un ordine, ma usi (a) l' ordine “naturale” , che significa il valore del compareTometodo sul tasto di oggetti definiti sulla Comparableinterfaccia, o (b) invoca un'implementazione che fornisci. Comparator
  • NULL s: TreeMapfa non permettono una NULL come la chiave , mentre HashMape LinkedHashMapfanno.
    • Tutti e tre consentono NULL come valore.
  • HashTableè legacy , da Java 1 . Sostituito dalla ConcurrentHashMapclasse. Citando il Javadoc: ConcurrentHashMapobbedisce alle stesse specifiche funzionali Hashtablee include le versioni dei metodi corrispondenti a ciascun metodo di Hashtable.

Tabella delle implementazioni delle mappe in Java 11, confrontando le loro caratteristiche


0

HashMap
può contenere una chiave null.

HashMap non mantiene alcun ordine.

TreeMap

TreeMap non può contenere alcuna chiave null.

TreeMap mantiene l'ordine crescente.

LinkedHashMap

LinkedHashMap può essere utilizzato per mantenere l'ordine di inserimento, su cui sono inserite le chiavi in ​​Map oppure può anche essere usato per mantenere un ordine di accesso, su cui si accede alle chiavi.

Esempi ::

1) HashMap map = new HashMap ();

    map.put(null, "Kamran");
    map.put(2, "Ali");
    map.put(5, "From");
    map.put(4, "Dir");`enter code here`
    map.put(3, "Lower");
    for (Map.Entry m : map.entrySet()) {
        System.out.println(m.getKey() + "  " + m.getValue());
    } 

2) Mappa TreeMap = new TreeMap ();

    map.put(1, "Kamran");
    map.put(2, "Ali");
    map.put(5, "From");
    map.put(4, "Dir");
    map.put(3, "Lower");
    for (Map.Entry m : map.entrySet()) {
        System.out.println(m.getKey() + "  " + m.getValue());
    }

3) LinkedHashMap map = new LinkedHashMap ();

    map.put(1, "Kamran");
    map.put(2, "Ali");
    map.put(5, "From");
    map.put(4, "Dir");
    map.put(3, "Lower");
    for (Map.Entry m : map.entrySet()) {
        System.out.println(m.getKey() + "  " + m.getValue());
    }

0

Il più importante tra tutti e tre è il modo in cui salvano l'ordine delle voci.

HashMap- Non salva l'ordine delle voci. per esempio.

public static void main(String[] args){
        HashMap<String,Integer> hashMap = new HashMap<>();
        hashMap.put("First",1);// First ---> 1 is put first in the map
        hashMap.put("Second",2);//Second ---> 2 is put second in the map
        hashMap.put("Third",3); // Third--->3 is put third in the map
        for(Map.Entry<String,Integer> entry : hashMap.entrySet())
        {
            System.out.println(entry.getKey()+"--->"+entry.getValue());
        }
    }

Uscita per HashMap

LinkedHashMap: Salva l'ordine in cui sono state inserite le voci. per esempio:

public static void main(String[] args){
        LinkedHashMap<String,Integer> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("First",1);// First ---> 1 is put first in the map
        linkedHashMap.put("Second",2);//Second ---> 2 is put second in the map
        linkedHashMap.put("Third",3); // Third--->3 is put third in the map
        for(Map.Entry<String,Integer> entry : linkedHashMap.entrySet())
        {
            System.out.println(entry.getKey()+"--->"+entry.getValue());
        }
    }

Output di LinkedHashMap

TreeMap: Salva le voci in ordine crescente delle chiavi. per esempio:

public static void main(String[] args) throws IOException {
        TreeMap<String,Integer> treeMap = new TreeMap<>();
        treeMap.put("A",1);// A---> 1 is put first in the map
        treeMap.put("C",2);//C---> 2 is put second in the map
        treeMap.put("B",3); //B--->3 is put third in the map
        for(Map.Entry<String,Integer> entry : treeMap.entrySet())
        {
            System.out.println(entry.getKey()+"--->"+entry.getValue());
        }
    }

Output di TreeMap

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.