Link utili :
Documentazione Sun : Map
Documentazione Sun : HashMap
Documentazione Sun : TreeMap
Breve introduzione :
Una “mappa” è una classe che associa ad un oggetto chiave ( key ) un oggetto valore ( value ) . Le mappe non possono contenere chiavi “duplicate”, cioè che abbiano lo stesso valore key. Questo significa che andando a inserire una chiave già esistente nella mappa, andremo a sovrascriverne il valore.
HashMap e TreeMap sono due implementazioni della classe Map .
Da notare che l’ HashMap , al contrario della TreeMap, permette l’inserimento di valori null .
Funzioni utili :
isEmpty() : restituisce true se la mappa non contiene key e value.
containsKey(key) : restituisce true se la mappa contiene la chiave key passata come argomento.
containsValue(value) : restituisce true se la mappa contiene il valore value passato come argomento.
get(key) : restituisce il valore associato al parametro key.
put(key,value) : inserisce la chiave e il valore nella mappa passati come argomenti.
remove(key) : rimuove la chiave ( e il valore associato ) passata come parametro .
Per le altre funzioni, vedere i link forniti sopra.
Esempio HashMap :
import java.util.*;
public class HashMappe
{
public static void main(String[] args)
{
// creamo una nuova mappa di String
HashMap map = new HashMap();
// nota : possiamo usare HashMap per creare un HashMap che accetti tipo1 per la chiave
// e tipo2 per il valore.
// Es : Hasmap map = new HashMap();
// Avremo così un HashMap che avrà la key e la value di tipo String.
// inserimento di una chiave / valore : map.put(key,value)
map.put("Prova", "uno");
map.put("Prova2", "due");
map.put("Prova3", "tre");
//essendo un HashMap possiamo inserire un valore nullo
map.put(null, null);
// stampiamo i valori inseriti
System.out.println(map);
// inseriamo una chiave gia esistente ,
// vedremo che verrà sovrascritto il vecchio valore.
map.put("Prova3","cinque");
System.out.println(map);
// funzioni mappe utili
// controlliamo se la mappa contiene la chiave Prova2
if ( map.containsKey("Prova2") )
System.out.println(map.get("Prova2")); // se la contiene la stampiamo
if ( map.isEmpty() ) // controllaimo se la mappa è vuota
System.out.println(" vuota"); // se è vuota la stampiamo
System.out.println(map.size()); // stampiamo il numero di chiavi della mappa
}
}
Esercizio ( questa volta usiamo la TreeMap ):
/* Scrivere il codice di una classe java che permetta di
* memorizzare stringhe. La classe dovrà implementare una
* funzione per memorizzare la generica stringa e una funzione
* che permetta di verificare l'avvenuto inserimento di una
* particolare stringa restituendo -1 se la stringa non è mai
* stata inserita o un numero intero positivo, relativo all'
* ordine di inserimento, se la stringa è stata effettivamente
* inserita.
*/
import java.util.*;
public class Esercizio3_160608
{
public static void main(String[] args)
{
// inizializziamo l'oggetto
esercizio3 esercizio = new esercizio3();
System.out.println(
"Inserisco:\n" +
"ciccio\n" +
"ciccio\n" +
"ciccio2\n" +
"ciccio3\n" +
"ciccio\n");
// inseriamo i valori
esercizio.insert("ciccio");
esercizio.insert("ciccio");
esercizio.insert("ciccio2");
esercizio.insert("ciccio3");
esercizio.insert("ciccio");
// visualiziamo i valori inseriti
System.out.println(esercizio.mappa);
// testiamo la funziona check
System.out.println(esercizio.check("tyht"));
System.out.println(esercizio.check("ciccio"));
}
}
class esercizio3
{
public TreeMap mappa; // mappa
public int value;
public esercizio3() // costruttore
{
mappa = new TreeMap();
value = 1; // ci servirà per stabilire l'ordine di inserimento
}
public void insert(String key)
{
// System.out.println(value);
mappa.put(key,value++);
// inseriamo la key passata come argomento ed assegnamoci
// , come valore, l'ordine di inserimento stabilito dalla
// variabile value. Ad ogni inserimento aumentiamo il valoire
// di value grazie a value++ .
}
public int check(String stringa)
{
if ( this.mappa.containsKey(stringa) ) // se è presente
{
return this.mappa.get(stringa); // visualizziamo il valore dell'ordinamento
}
else // altrimenti ritorniamo -1 .
return -1;
}
}
Ecco qui i sorgenti degli esempi di sopra.
Esempio 1
Esempio 2
