Java - La classe Hashtable
Hashtable faceva parte del java.util originale ed è un'implementazione concreta di un dizionario.
Tuttavia, Java 2 ha riprogettato Hashtable in modo da implementare anche l'interfaccia Map. Pertanto, Hashtable è ora integrato nel framework delle raccolte. È simile a HashMap, ma è sincronizzato.
Come HashMap, Hashtable memorizza le coppie chiave / valore in una tabella hash. Quando si utilizza una tabella hash, si specifica un oggetto che viene utilizzato come chiave e il valore che si desidera collegare a quella chiave. La chiave viene quindi sottoposta ad hashing e il codice hash risultante viene utilizzato come indice in corrispondenza del quale il valore viene archiviato nella tabella.
Di seguito è riportato l'elenco dei costruttori forniti dalla classe HashTable.
Suor n | Costruttore e descrizione |
---|---|
1 | Hashtable( ) Questo è il costruttore predefinito della tabella hash che istanzia la classe Hashtable. |
2 | Hashtable(int size) Questo costruttore accetta un parametro intero e crea una tabella hash con una dimensione iniziale specificata dalla dimensione del valore intero. |
3 | Hashtable(int size, float fillRatio) Questo crea una tabella hash con una dimensione iniziale specificata da size e un rapporto di riempimento specificato da fillRatio. Questo rapporto deve essere compreso tra 0,0 e 1,0 e determina quanto può essere piena la tabella hash prima che venga ridimensionata verso l'alto. |
4 | Hashtable(Map < ? extends K, ? extends V > t) Questo costruisce un Hashtable con le mappature fornite. |
Oltre ai metodi definiti dall'interfaccia Map, Hashtable definisce i seguenti metodi:
Suor n | Metodo e descrizione |
---|---|
1 | void clear( ) Reimposta e svuota la tabella hash. |
2 | Object clone( ) Restituisce un duplicato dell'oggetto invocante. |
3 | boolean contains(Object value) Restituisce vero se un valore uguale al valore esiste all'interno della tabella hash. Restituisce false se il valore non viene trovato. |
4 | boolean containsKey(Object key) Restituisce vero se una chiave uguale alla chiave esiste all'interno della tabella hash. Restituisce false se la chiave non viene trovata. |
5 | boolean containsValue(Object value) Restituisce vero se un valore uguale al valore esiste all'interno della tabella hash. Restituisce false se il valore non viene trovato. |
6 | Enumeration elements( ) Restituisce un'enumerazione dei valori contenuti nella tabella hash. |
7 | Object get(Object key) Restituisce l'oggetto che contiene il valore associato alla chiave. Se la chiave non è nella tabella hash, viene restituito un oggetto nullo. |
8 | boolean isEmpty( ) Restituisce vero se la tabella hash è vuota; restituisce false se contiene almeno una chiave. |
9 | Enumeration keys( ) Restituisce un'enumerazione delle chiavi contenute nella tabella hash. |
10 | Object put(Object key, Object value) Inserisce una chiave e un valore nella tabella hash. Restituisce null se la chiave non è già nella tabella hash; restituisce il valore precedente associato alla chiave se la chiave è già nella tabella hash. |
11 | void rehash( ) Aumenta la dimensione della tabella hash e modifica tutte le sue chiavi. |
12 | Object remove(Object key) Rimuove la chiave e il suo valore. Restituisce il valore associato alla chiave. Se la chiave non è nella tabella hash, viene restituito un oggetto nullo. |
13 | int size( ) Restituisce il numero di voci nella tabella hash. |
14 | String toString( ) Restituisce l'equivalente stringa di una tabella hash. |
Esempio
Il seguente programma illustra molti dei metodi supportati da questa struttura dati:
import java.util.*;
public class HashTableDemo {
public static void main(String args[]) {
// Create a hash map
Hashtable balance = new Hashtable();
Enumeration names;
String str;
double bal;
balance.put("Zara", new Double(3434.34));
balance.put("Mahnaz", new Double(123.22));
balance.put("Ayan", new Double(1378.00));
balance.put("Daisy", new Double(99.22));
balance.put("Qadir", new Double(-19.08));
// Show all balances in hash table.
names = balance.keys();
while(names.hasMoreElements()) {
str = (String) names.nextElement();
System.out.println(str + ": " + balance.get(str));
}
System.out.println();
// Deposit 1,000 into Zara's account
bal = ((Double)balance.get("Zara")).doubleValue();
balance.put("Zara", new Double(bal + 1000));
System.out.println("Zara's new balance: " + balance.get("Zara"));
}
}
Questo produrrà il seguente risultato:
Produzione
Qadir: -19.08
Zara: 3434.34
Mahnaz: 123.22
Daisy: 99.22
Ayan: 1378.0
Zara's new balance: 4434.34