La clase ConcurrentSkipListMap es miembro de Java Collections Framework . Fue introducido en JDK 1.6, pertenece al paquete java.util.concurrent . ConcurrentSkipListMap es una implementación escalable de ConcurrentNavigableMap . Todos los elementos se ordenan según el orden natural o por el Comparador pasado durante su tiempo de construcción. Esta clase utiliza una variación simultánea de la estructura de datos SkipList que proporciona el costo de tiempo de registro (n) para las operaciones de inserción, eliminación, actualización y acceso. Estas operaciones son seguras para ejecutarse simultáneamente por varios subprocesos.
Declaración
clase pública ConcurrentSkipListMap<K,V> extiende AbstractMap<K,V> implementa ConcurrentNavigableMap<K,V>, Cloneable, Serializable
Aquí, K es el tipo de objeto clave y V es el tipo de objeto de valor.
La jerarquía de ConcurrentSkipListMap
Implementa las interfaces Serializable , Cloneable , ConcurrentMap<K,V> , ConcurrentNavigableMap<K,V> , Map<K,V> , NavigableMap<K,V> , SortedMap<K,V> y extiende AbstractMap< Clase K, V> .
Constructores de ConcurrentSkipListMap
1. ConcurrentSkipListMap() : Construye un nuevo mapa vacío, clasificado según el orden natural de las claves.
ConcurrentSkipListMap<K, V> cslm = new ConcurrentSkipListMap<K, V>();
2. ConcurrentSkipListMap(Comparator<? super K> comparador) : construye un nuevo mapa vacío, ordenado de acuerdo con el comparador especificado.
ConcurrentSkipListMap<K, V> cslm = new ConcurrentSkipListMap<K, V>(Comparator<? super K> comparador);
3. ConcurrentSkipListMap(Map<? extends K,? extends V> m) : Construye un nuevo mapa que contiene las mismas asignaciones que el mapa dado, ordenadas de acuerdo con el orden natural de las claves.
ConcurrentSkipListMap<K, V> cslm = new ConcurrentSkipListMap<K, V>(Map<? extiende K,? extiende V> m);
4. ConcurrentSkipListMap(SortedMap<K,? extends V> m) : Construye un nuevo mapa que contiene las mismas asignaciones y usa el mismo orden que el mapa ordenado especificado.
ConcurrentSkipListMap<K, V> cslm = new ConcurrentSkipListMap<K, V>(SortedMap<K,? extiende V> m);
Ejemplo
Java
// Java Program to Demonstrate // ConcurrentSkipListMap import java.io.*; import java.util.*; import java.util.concurrent.*; class ConcurrentSkipListMapExample { public static void main(String[] args) { // create an instance of ConcurrentSkipListMap ConcurrentSkipListMap<String, String> cslm = new ConcurrentSkipListMap<String, String>(); // Add mappings using put method cslm.put("3", "Geeks"); cslm.put("2", "from"); cslm.put("1", "Hi!"); cslm.put("5", "Geeks"); cslm.put("4", "for"); // print to the console System.out.println("Initial Map : " + cslm); // print key-value pair whose key is greater than 2 System.out.println("ceilingEntry-2: " + cslm.ceilingEntry("2")); // get the descending key set NavigableSet navigableSet = cslm.descendingKeySet(); System.out.println("descendingKeySet: "); // Iterate through the keySet Iterator itr = navigableSet.iterator(); while (itr.hasNext()) { String s = (String)itr.next(); System.out.println(s); } // print the first mapping System.out.println("firstEntry: " + cslm.firstEntry()); // print the last mapping System.out.println("lastEntry: " + cslm.lastEntry()); // remove the first mapping and print it System.out.println("pollFirstEntry: " + cslm.pollFirstEntry()); // print the first mapping System.out.println("now firstEntry: " + cslm.firstEntry()); // remove the last mapping and print it System.out.println("pollLastEntry: " + cslm.pollLastEntry()); // print the last mapping System.out.println("now lastEntry: " + cslm.lastEntry()); } }
Initial Map : {1=Hi!, 2=from, 3=Geeks, 4=for, 5=Geeks} ceilingEntry-2: 2=from descendingKeySet: 5 4 3 2 1 firstEntry: 1=Hi! lastEntry: 5=Geeks pollFirstEntry: 1=Hi! now firstEntry: 2=from pollLastEntry: 5=Geeks now lastEntry: 4=for
Operaciones básicas
1. Agregar asignaciones
El método put() de ConcurrentSkipListMap asocia el valor especificado con la clave especificada en este mapa. Si el mapa contenía anteriormente una asignación para la clave, se reemplaza el valor anterior.
Java
// Java Program to demonstrate adding // mappings to a ConcurrentSkipListMap import java.util.concurrent.*; class AddingMappingsExample { public static void main(String[] args) { // Initializing the map ConcurrentSkipListMap<Integer, Integer> cslm = new ConcurrentSkipListMap<Integer, Integer>(); // Adding elements to this map for (int i = 1; i <= 9; i++) cslm.put(i, i); // put() operation on the map System.out.println("After put(): " + cslm); } }
After put(): {1=1, 2=2, 3=3, 4=4, 5=5, 6=6, 7=7, 8=8, 9=9}
2. Eliminar asignaciones
El método remove() de ConcurrentSkipListMap elimina la asignación de la clave especificada de esta asignación. El método devuelve nulo si no hay una asignación para esa clave en particular. Después de realizar este método, se reduce el tamaño del mapa. Para eliminar la primera entrada y la última entrada del mapa, podemos usar pollFirstEntry() y pollLastEntry() respectivamente.
Java
// Java Program Demonstrate removing // mappings from ConcurrentSkipListMap import java.util.concurrent.*; class RemovingMappingsExample { public static void main(String[] args) { // Initializing the map ConcurrentSkipListMap<Integer, Integer> cslm = new ConcurrentSkipListMap<Integer, Integer>(); // Adding elements to this map for (int i = 1; i <= 6; i++) cslm.put(i, i); // remove() operation on the map cslm.remove(5); // print the modified map System.out.println("After remove(): " + cslm); // remove the first mapping and print it System.out.println("pollFirstEntry: " + cslm.pollFirstEntry()); // remove the last mapping and print it System.out.println("pollLastEntry: " + cslm.pollLastEntry()); // Print final map System.out.println("map contents: " + cslm); } }
After remove(): {1=1, 2=2, 3=3, 4=4, 6=6} pollFirstEntry: 1=1 pollLastEntry: 6=6 map contents: {2=2, 3=3, 4=4}
3. Iterando
Podemos usar la interfaz Iterator para atravesar cualquier estructura del marco de colección. Dado que los iteradores trabajan con un tipo de datos, usamos Entry< ? , ? > para resolver los dos tipos separados en un formato compatible. Luego, usando el método next() imprimimos los elementos del ConcurrentSkipListMap.
Java
// Java Program to demonstrate iterating // over ConcurrentSkipListMap import java.util.concurrent.*; import java.util.*; class IteratingExample { public static void main(String[] args) { // create an instance of ConcurrentSkipListMap ConcurrentSkipListMap<Integer, Integer> cslm = new ConcurrentSkipListMap<>(); // Add mappings using put method for (int i = 0; i < 6; i++) { cslm.put(i, i); } // Create an Iterator over the // ConcurrentSkipListMap Iterator<ConcurrentSkipListMap .Entry<Integer, Integer> > itr = cslm.entrySet().iterator(); // The hasNext() method is used to check if there is // a next element The next() method is used to // retrieve the next element while (itr.hasNext()) { ConcurrentSkipListMap .Entry<Integer, Integer> entry = itr.next(); System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); } } }
Key = 0, Value = 0 Key = 1, Value = 1 Key = 2, Value = 2 Key = 3, Value = 3 Key = 4, Value = 4 Key = 5, Value = 5
Métodos de ConcurrentSkipListMap
MÉTODO |
DESCRIPCIÓN |
---|---|
entrada de techo (tecla K) | Devuelve una asignación de clave-valor asociada con la clave mínima mayor o igual que la clave dada, o nula si no existe tal entrada. |
tecla de techo (tecla K) | Devuelve la clave mínima mayor o igual que la clave dada, o nula si no existe tal clave. |
clear() | Elimina todas las asignaciones de este mapa. |
clon() | Devuelve una copia superficial de esta instancia de ConcurrentSkipListMap. |
calcular(tecla K, BiFunction<? super K,? super V,? extiende V> función de reasignación) | Intenta calcular una asignación para la clave especificada y su valor asignado actual (o nulo si no hay una asignación actual). |
ComputeIfAbsent(tecla K, función <? super K,? extiende V> función de mapeo) | Si la clave especificada aún no está asociada con un valor, intenta calcular su valor usando la función de mapeo dada y lo ingresa en este mapa a menos que sea nulo. |
ComputeIfPresent(tecla K, BiFunction<? super K,? super V,? extiende V> función de reasignación) | Si el valor de la clave especificada está presente, intenta calcular una nueva asignación dada la clave y su valor asignado actual. |
containsKey(clave de objeto) | Devuelve verdadero si este mapa contiene un mapeo para la clave especificada. |
contiene valor (valor del objeto) | Devuelve verdadero si este mapa asigna una o más claves al valor especificado. |
conjuntoentrada() | Devuelve una vista de conjunto de las asignaciones contenidas en este mapa. |
es igual a(Objeto o) | Compara el objeto especificado con este mapa para la igualdad. |
Primera entrada() | Devuelve una asignación de clave-valor asociada con la clave mínima en esta asignación, o nula si la asignación está vacía. |
primeraClave() | Devuelve la primera clave (más baja) actualmente en este mapa. |
entrada de piso (tecla K) | Devuelve una asignación de clave-valor asociada con la clave mayor menor o igual que la clave dada, o nula si no existe tal clave. |
FloorKey (tecla K) | Devuelve la clave mayor menor o igual que la clave dada, o nula si no existe tal clave. |
obtener (clave de objeto) | Devuelve el valor al que se asigna la clave especificada, o nulo si este mapa no contiene ninguna asignación para la clave. |
getOrDefault(Clave de objeto, V valor predeterminado) | Devuelve el valor al que se asigna la clave especificada, o el valor predeterminado dado si este mapa no contiene ninguna asignación para la clave. |
headMap(K a Key) | Devuelve una vista de la parte de este mapa cuyas claves son estrictamente menores que toKey. |
headMap(K toKey, booleano inclusive) | Devuelve una vista de la parte de este mapa cuyas claves son menores que (o iguales, si inclusive es verdadero) toKey. |
entrada superior (tecla K) | Devuelve un mapeo de clave-valor asociado con la clave mínima estrictamente mayor que la clave dada, o nulo si no existe tal clave. |
clave superior (tecla K) | Devuelve la clave mínima estrictamente mayor que la clave dada, o nula si no existe tal clave. |
juego de llaves() | Devuelve una vista NavigableSet de las claves contenidas en este mapa. |
última entrada() | Devuelve una asignación de clave-valor asociada con la clave mayor en esta asignación, o nula si la asignación está vacía. |
última clave() | Devuelve la última clave (más alta) actualmente en este mapa. |
entrada inferior (tecla K) | Devuelve un mapeo de clave-valor asociado con la clave mayor estrictamente menor que la clave dada, o nulo si no existe tal clave. |
tecla inferior (tecla K) | Devuelve la clave mayor estrictamente menor que la clave dada, o nula si no existe tal clave. |
fusionar (tecla K, valor V, BiFunction<? super V,? super V,? extiende V> función de reasignación) | Si la clave especificada aún no está asociada con un valor, la asocia con el valor dado. |
encuestaPrimeraEntrada() | Elimina y devuelve un mapeo de clave-valor asociado con la clave mínima en este mapa, o nulo si el mapa está vacío. |
encuestaÚltimaEntrada() | Elimina y devuelve un mapeo de clave-valor asociado con la clave mayor en este mapa, o nulo si el mapa está vacío. |
poner (tecla K, valor V) | Asocia el valor especificado con la clave especificada en este mapa. |
putIfAbsent(clave K, valor V) | Si la clave especificada aún no está asociada con un valor, la asocia con el valor dado. |
eliminar (tecla de objeto) | Elimina la asignación de la clave especificada de esta asignación, si está presente. |
eliminar (clave de objeto, valor de objeto) | Elimina la entrada de una clave solo si actualmente está asignada a un valor dado. |
reemplazar (tecla K, valor V) | Reemplaza la entrada de una clave solo si actualmente está asignada a algún valor. |
reemplazar (tecla K, V valor anterior, V valor nuevo) | Reemplaza la entrada de una clave solo si actualmente está asignada a un valor dado. |
submapa(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) | Devuelve una vista de la parte de este mapa cuyas claves van desde fromKey hasta toKey. |
submapa(K fromKey, K toKey) | Devuelve una vista de la parte de este mapa cuyas claves van desde fromKey, inclusive, hasta toKey, exclusiva. |
tailMap(K fromKey) | Devuelve una vista de la parte de este mapa cuyas claves son mayores o iguales que fromKey. |
tailMap(K fromKey, booleano inclusive) | Devuelve una vista de la parte de este mapa cuyas claves son mayores que (o iguales, si inclusive es verdadero) fromKey. |
valores() | Devuelve una vista de colección de los valores contenidos en este mapa. |
Métodos declarados en la clase java.util.AbstractMap
MÉTODO |
DESCRIPCIÓN |
---|---|
código hash() | Devuelve el valor del código hash para este mapa. |
esta vacio() | Devuelve verdadero si este mapa no contiene asignaciones de clave-valor. |
putAll(Map<? extiende K,? extiende V> m) | Copia todas las asignaciones del mapa especificado a este mapa (operación opcional). |
Talla() | Devuelve el número de asignaciones de clave-valor en esta asignación. |
Enstringr() | Devuelve una representación de string de este mapa. |
Métodos declarados en la interfaz java.util.concurrent.ConcurrentMap
MÉTODO |
DESCRIPCIÓN |
---|---|
forEach(BiConsumidor<? super K,? super V> acción) | Realiza la acción dada para cada entrada en este mapa hasta que todas las entradas hayan sido procesadas o la acción arroje una excepción. |
replaceAll(BiFunction<? super K,? super V,? extiende la función V>) | Reemplaza el valor de cada entrada con el resultado de invocar la función dada en esa entrada hasta que se hayan procesado todas las entradas o la función produzca una excepción. |
Métodos declarados en la interfaz java.util.concurrent.ConcurrentNavigableMap
MÉTODO |
DESCRIPCIÓN |
---|---|
descendingKeySet() | Devuelve una vista de NavigableSet en orden inverso de las claves contenidas en este mapa. |
mapadescendente() | Devuelve una vista en orden inverso de las asignaciones contenidas en este mapa. |
conjunto de claves navegables() | Devuelve una vista NavigableSet de las claves contenidas en este mapa. |
Métodos declarados en la interfaz java.util.Map
MÉTODO |
DESCRIPCIÓN |
---|---|
código hash() | Devuelve el valor del código hash para este mapa. |
esta vacio() | Devuelve verdadero si este mapa no contiene asignaciones de clave-valor. |
putAll(Map<? extiende K,? extiende V> m) | Copia todas las asignaciones del mapa especificado a este mapa (operación opcional). |
Talla() | Devuelve el número de asignaciones de clave-valor en esta asignación. |
Métodos declarados en la interfaz java.util.SortedMap
MÉTODO |
DESCRIPCIÓN |
---|---|
comparador() | Devuelve el comparador usado para ordenar las claves en este mapa, o nulo si este mapa usa el ordenamiento natural de sus claves. |
Referencia: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/ConcurrentSkipListMap.html
Publicación traducida automáticamente
Artículo escrito por Ganeshchowdharysadanala y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA