Vai al contenuto principale
Pubblicato il

Classe Hashtable in Java

Condividi:

Introduzione

La Hashtable è una delle prime strutture dati fornite da Java, presente fin dalla sua prima versione. La sua capacità di archiviare coppie chiave-valore la rende indispensabile per molte applicazioni che necessitano di un'archiviazione e un recupero dei dati efficienti.

Caratteristiche della Classe Hashtable

  1. Sincronizzata: A differenza di HashMap, la Hashtable è thread-safe, il che significa che più thread possono condividere una singola Hashtable senza necessità di sincronizzazione aggiuntiva.
  2. Non consente valori null: Nella Hashtable non è possibile avere chiavi o valori null, il che costituisce una differenza significativa rispetto ad altre strutture dati come HashMap.
  3. Efficienza: Utilizzando una tecnica di hashing, le Hashtable garantiscono tempi di accesso quasi costanti, rendendo il recupero dei valori estremamente rapido.
  4. Capacità e Fattore di Carico: La Hashtable dispone di un costruttore che accetta sia la capacità iniziale sia il fattore di carico. Ciò consente di ottimizzare la tabella in termini di dimensioni ed efficienza.

Metodi Principali

Oltre ai metodi di base per l'inserimento e il recupero, la Hashtable offre una varietà di metodi utili:

  • clear(): Svuota la tabella.
  • contains(): Verifica se un valore è presente.
  • containsKey(): Verifica la presenza di una chiave specifica.
  • containsValue(): Simile a contains(), ma più chiaro nella sua intenzione.
  • get(): Recupera un valore in base alla chiave fornita.
  • isEmpty(): Verifica se la tabella è vuota.
  • keys(): Restituisce un'enumerazione delle chiavi nella tabella.
  • size(): Restituisce il numero di coppie chiave-valore nella tabella.
package com.caffeinealgorithm.programaremjava;

import java.util.Hashtable;

public class ClasseHashtable {
  private Hashtable<String, Integer> persone = new Hashtable<>();

  public void Run() {
    persone.put("Nelson Silva", 28);
    persone.put("Larissa Fernandes", 37);
    persone.put("Pedro Henrique", 52);
    persone.put("Raquel Soares", 68);

    persone.replace("Pedro Henrique", 100);
    persone.remove("Larissa Fernandes");
    // persone.clear();

    System.out.printf("Nomi delle persone: %s\n", persone.keySet());
    System.out.printf("Età delle persone: %s", persone.values());
  }
}

/*
  Nomi delle persone: [Nelson Silva, Raquel Soares, Pedro Henrique]
  Età delle persone: [28, 68, 100]
*/

Applicabilità

Data la sua natura sincronizzata, la Hashtable è ideale per le applicazioni in cui più thread potrebbero tentare di accedere e modificare i dati contemporaneamente. Viene inoltre frequentemente utilizzata in applicazioni che richiedono elevate frequenze di interrogazione e basse frequenze di inserimento/aggiornamento.

Conclusione

Padroneggiare la classe Hashtable e le sue sfumature è fondamentale per gli sviluppatori Java. Questa struttura dati ha superato la prova del tempo e rimane rilevante in molti scenari di programmazione. Investire tempo nella comprensione del suo funzionamento e delle sue caratteristiche può tradursi in codice più efficiente e robusto nelle proprie applicazioni.

Happy coding!