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