HOWTO · Java

Differenza tra hashtable e hashmap in Java

Questo articolo introduce le differenze tra hashtable e hashmap in Java.

In questa pagina

Questo tutorial introduce le differenze tra Hashtable e HashMap in Java elenca anche alcuni codici di esempio per comprendere l’argomento.

Hashtable è una classe nel framework delle raccolte Java utilizzata per memorizzare i dati in coppie chiave-valore. È una classe legacy in Java e lavora sul concetto di hash per memorizzare gli elementi. Nelle ultime versioni di Java, Hashtable non è consigliato. Dovremmo piuttosto usare HashMap che è più avanzato di Hashtable. Vedi la tabella seguente che riassume le differenze chiave tra Hashtable e HashMap in Java.

Hashtable vs HashMap

Hashtable HashMap
Sincronizzato Non sincronizzato
Null non consentito Consenti null
Classe legacy Non eredità
È lento È veloce

Nella tabella di confronto sopra, possiamo vedere chiaramente le principali differenze tra Hashtable e HashMap. Vediamo ora alcuni esempi.

Poiché Hashtable è sincronizzato internamente, questo rende Hashtable leggermente più lento di HashMap.

Crea Hashtable in Java

In questo esempio, stiamo creando Hashtable. È il modo più semplice per creare Hashtable e dobbiamo solo importare Hashtable nel nostro codice. Questa classe si trova nel pacchetto java.util. Vedi l’esempio sotto.

import java.util.Hashtable;

public class SimpleTesting {
  public static void main(String[] args) {
    Hashtable<Integer, String> hashTable = new Hashtable<>();
    hashTable.put(1, "One");
    hashTable.put(2, "Two");
    hashTable.put(3, "Three");
    System.out.println(hashTable);
  }
}

Produzione:

{3=Three, 2=Two, 1=One}

Crea HashMap in Java

In questo esempio, stiamo creando HashMap in Java. È il modo più semplice per creare HashMap e dobbiamo solo importare HashMap nel nostro codice. Questa classe si trova nel pacchetto java.util. Vedi l’esempio sotto.

import java.util.HashMap;

public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<Integer, String> hashTable = new HashMap<>();
    hashTable.put(1, "One");
    hashTable.put(2, "Two");
    hashTable.put(3, "Three");
    System.out.println(hashTable);
  }
}

Produzione:

{3=Three, 2=Two, 1=One}

Memorizza null in HashMap in Java

La HashMap consente di memorizzare null, il che significa che possiamo memorizzare una chiave null e più valori null in HashMap. Questa classe è utile quando hai null nelle tue raccolte. Vedi l’esempio sotto.

import java.util.HashMap;

public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<Integer, String> hashTable = new HashMap<>();
    hashTable.put(1, "One");
    hashTable.put(2, "Two");
    hashTable.put(3, "Three");
    hashTable.put(null, "Four");
    hashTable.put(null, null);
    System.out.println(hashTable);
  }
}

Produzione:

{null=null, 1=One, 2=Two, 3=Three}

Memorizza null in Hashtable in Java

La Hashtable non consente la memorizzazione di null, il che significa che non possiamo memorizzare un null in Hashtable. Questa classe non è utile quando hai null nelle tue raccolte. Vedi l’esempio sotto.

Genera un’eccezione NullPointerException se viene memorizzato un valore nullo.

import java.util.Hashtable;

public class SimpleTesting {
  public static void main(String[] args) {
    Hashtable<Integer, String> hashTable = new Hashtable<>();
    hashTable.put(1, "One");
    hashTable.put(2, "Two");
    hashTable.put(3, "Three");
    hashTable.put(null, "Four");
    hashTable.put(null, null);
    System.out.println(hashTable);
  }
}

Produzione:

Exception in thread "main" java.lang.NullPointerException