ConcurrentHashMap vs Hashtable en Java

  1. Creando ConcurrentHashMap en Java
  2. Creando HashTable en Java
ConcurrentHashMap vs Hashtable en Java

Este tutorial presenta la diferencia entre ConcurrentHashMap y Hashtable en Java.

ConcurrentHashMap es una clase que pertenece al marco java.util.concurrent. Implementa ConcurrentMap y una interfaz serializable. Se utiliza para almacenar datos seguros para subprocesos. Utiliza varios depósitos para almacenar datos. La sintaxis de declaración de esto es:

public class ConcurrentHashMap<K, V>
    extends AbstractMap<K, V> implements ConcurrentMap<K, V>, Serializable

Puntos clave de ConcurrentHashMap

  • Es seguro para subprocesos.
  • Utiliza múltiples bloqueos a nivel de segmento en lugar de todo el mapa.
  • Utiliza 16 cerraduras por defecto.
  • Se aplica a bloquear solo para actualizaciones. Para la lectura, permite que varios subprocesos accedan a los datos.

Veamos un ejemplo de ConcurrentHashMap.

Creando ConcurrentHashMap en Java

En este ejemplo, creamos un ConcurrentHashMap que contiene datos de tipo String e Integer. Usamos el método put() para agregar elementos y los métodos getKey() y getValue() para acceder a la clave y el valor respectivamente. Vea el ejemplo a continuación.

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class SimpleTesting {
  ConcurrentHashMap<String, Integer> hm = new ConcurrentHashMap<String, Integer>();
  public void AddScore(String name, int score) {
    hm.put(name, score);
  }
  public static void main(String[] args) {
    SimpleTesting simpleTesting = new SimpleTesting();
    simpleTesting.AddScore("Rohan", 95);
    simpleTesting.AddScore("Sohan", 85);
    simpleTesting.AddScore("Mohan", 93);
    simpleTesting.AddScore("Lohan", 91);
    System.out.println("Students Scores: ");
    for (Map.Entry<String, Integer> entry : simpleTesting.hm.entrySet()) {
      System.out.println(entry.getKey() + " - " + entry.getValue());
    }
  }
}

Producción :

Students Scores: 
Lohan - 91
Mohan - 93
Sohan - 85
Rohan - 95

HashTable es una clase que pertenece al marco de la colección de Java. Se utiliza para almacenar datos en pares de clave y valor. Implementa la interfaz Map, Cloneable y Serializable. La declaración de clase se da a continuación.

public class Hashtable<K, V> extends Dictionary<K, V> implements Map<K, V>, Cloneable, Serializable

Puntos clave de HashTable:

  • Utiliza un solo bloqueo para todos los datos.
  • Es seguro para subprocesos, es decir, sincronizado.
  • No permite claves ni valores nulos.

Veamos un ejemplo de HashTable.

Creando HashTable en Java

En este ejemplo, creamos una HashTable que almacena datos de tipo cadena y entero. Usamos el método put() para agregar elementos y el método getKey(), y el método getValue() para acceder a la clave y el valor respectivamente. Vea el ejemplo a continuación.

import java.util.Hashtable;
import java.util.Map;

public class SimpleTesting {
  Hashtable<String, Integer> hm = new Hashtable<String, Integer>();
  public void AddScore(String name, int score) {
    hm.put(name, score);
  }
  public static void main(String[] args) {
    SimpleTesting simpleTesting = new SimpleTesting();
    simpleTesting.AddScore("Rohan", 95);
    simpleTesting.AddScore("Sohan", 85);
    simpleTesting.AddScore("Mohan", 93);
    simpleTesting.AddScore("Lohan", 91);
    System.out.println("Students Scores: ");
    for (Map.Entry<String, Integer> entry : simpleTesting.hm.entrySet()) {
      System.out.println(entry.getKey() + " - " + entry.getValue());
    }
  }
}

Producción :

Students Scores: 
Rohan - 95
Mohan - 93
Sohan - 85
Lohan - 91
¿Disfrutas de nuestros tutoriales? Suscríbete a DelftStack en YouTube para apoyarnos en la creación de más guías en vídeo de alta calidad. Suscríbete