La classe Java TreeMap memorizza i dati in una struttura ad albero utilizzando un'interfaccia mappa. Questa classe estende la classe AbstractMap e, come la sua classe padre, TreeMap ha due parametri di tipo. Uno dei suoi parametri di tipo rappresenta le chiavi nella TreeMap, mentre l'altro rappresenta i valori.

La struttura dati TreeMap memorizza coppie chiave-valore e consente di eseguire operazioni CRUD su questi dati.

Come creare una mappa ad albero in Java

La classe TreeMap ha quattro costruttori che puoi usare per creare un nuovo oggetto TreeMap. Il costruttore predefinito è il più popolare dei quattro. Questo costruttore non accetta argomenti e genera una mappa ad albero vuota.

// Crea una nuova mappa ad albero
Mappa ad albero clienti = nuovo Mappa ad albero();

Il codice sopra genera una mappa ad albero vuota chiamata clienti.

Popolamento della struttura dati di TreeMap

Il mettere() aggiunge un elemento a un oggetto TreeMap. Richiede due argomenti: una chiave e il suo valore. Puoi aggiungere elementi alla mappa ad albero in qualsiasi ordine casuale e la struttura dei dati li memorizzerà in ordine crescente, in base alle loro chiavi.

instagram viewer

// Popolare una mappa ad albero
clienti.put(105, "Jessica Jones");
clienti.put(102, "Marco Williams");
clienti.put(104, "Filippo Blair");
clienti.put(101, "Kim Brown");
clienti.put(103, "Jim Riley");

Il codice sopra aggiunge cinque clienti, in ordine casuale, alla mappa ad albero dei clienti.

Visualizzazione di elementi in una TreeMap

La classe TreeMap memorizza i suoi dati in un oggetto. Quindi, per vedere tutti gli elementi in una mappa ad albero puoi semplicemente stampare l'oggetto mappa ad albero sulla console:

// Visualizza tutti gli elementi della mappa ad albero come un oggetto
System.out.println (clienti);

Il codice sopra stampa il seguente output sulla console:

{101=Kim Brown, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

Si noti che l'oggetto sopra mostra gli elementi in ordine crescente. Puoi anche visualizzare ogni elemento e la relativa chiave utilizzando un ciclo for Java.

// Visualizza tutti gli elementi con un iteratore
per (Iscrizione cliente: clienti.entrySet()) {
System.out.println("Chiave: " + customer.getKey() + " Value: " + customer.getValue());
}

Il codice sopra stampa il seguente output sulla console:

Chiave: 101 Valore: Kim Brown
Chiave: 102 Valore: Mark Williams
Chiave: 103 Valore: Jim Riley
Chiave: 104 Valore: Phil Blair
Chiave: 105 Valore: Jessica Jones

Aggiornare gli elementi in una TreeMap

La classe TreeMap consente di aggiornare un elemento esistente utilizzando il file sostituire() metodo. Sono disponibili due metodi di sostituzione. Il primo metodo accetta una chiave esistente e il nuovo valore su cui si desidera mappare la chiave esistente.

// Sostituisci il valore esistente
clienti.sostituisci(101,"Kim Smith");
System.out.println (clienti);

Il codice sopra stampa il seguente oggetto nella console:

{101=Kim Smith, 102=Mark Williams, 103=Jim Riley, 104=Phil Blair, 105=Jessica Jones}

Come potete vedere Kim Brown è ora Kim Smith. Il secondo metodo replace() prende una chiave esistente, il valore corrente della chiave e il nuovo valore che si desidera mappare sulla chiave.

// Sostituisci il valore esistente
clienti.sostituisci(103,"Jim Riley", "Michelle Noah");
System.out.println (clienti);

Il codice sopra stampa il seguente oggetto nella console:

{101=Kim Brown, 102=Mark Williams, 103=Michelle Noah, 104=Phil Blair, 105=Jessica Jones}

Nell'oggetto sopra Michelle Noè sostituisce Jim Riley.

Eliminazione di elementi da TreeMap

Se vuoi rimuovere un singolo elemento dalla mappa ad albero, il rimuovere() il metodo è la tua unica opzione. Prende la chiave associata all'elemento che si desidera rimuovere e restituisce il valore eliminato.

// Rimuove un elemento
clienti.rimuovi(104);
System.out.println (clienti);

L'esecuzione del codice precedente stampa il seguente oggetto sulla console:

{101=Kim Smith, 102=Mark Williams, 103=Michelle Noah, 105=Jessica Jones}

Questo Classe Java ha anche un chiaro() metodo che consente di eliminare tutti gli elementi nella mappa ad albero.

La mappa ad albero vs. la classe Java HashMap

TreeMap e HashMap sono due delle classi di mappe Java più popolari. Entrambi estendono la classe AbstractMap. Questa relazione fornisce alle classi TreeMap e HashMap l'accesso a molte delle stesse funzioni.

Tuttavia, ci sono alcune differenze degne di nota tra queste due classi di mappe. TreeMap utilizza un'implementazione dell'albero rosso-nero dell'interfaccia Map, mentre HashMap utilizza una tabella hash. HashMap ti consente di memorizzare una singola chiave nulla, mentre TreeMap no. Infine, una HashMap è più veloce di una TreeMap. La velocità algoritmica del primo è O(1) mentre quella del secondo è O(log(n)).