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