English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基礎教程

Controllo dei flussi Java

Array Java

Java orientato agli oggetti (I)

Java orientato agli oggetti (II)

Java orientato agli oggetti (III)

Java 異常處理

Lista Java

Queue Java (coda)

Map Java

Set Java

Input/Output (I/O) Java

Reader/Writer Java

Altri argomenti Java

Interfaccia ConcurrentMap Java

In questo tutorial, impareremo l'interfaccia Java ConcurrentMap e i suoi metodi.

L'interfaccia ConcurrentMap del framework delle collezioni Java fornisce una mappatura thread-safe. Questo significa che più thread possono accedere alla mappatura contemporaneamente senza influenzare la coerenza degli elementi nella mappatura.

ConcurrentMap è chiamato map sincronizzata.

Eredita daInterfaccia Map.

Classi che implementano ConcurrentMap

Poiché ConcurrentMap è un'interfaccia, non è possibile creare oggetti da essa.

Per utilizzare le funzionalità dell'interfaccia ConcurrentMap, dobbiamo utilizzare la classe ConcurrentHashMap che implements l'interfaccia.

Come utilizzare ConcurrentMap?

Per utilizzare ConcurrentMap, dobbiamo prima importare il pacchetto java.util.concurrent.ConcurrentMap. Dopo aver importato il pacchetto, creare la mappatura concorrente seguendo il seguente metodo.

// Utilizzo della classe ConcurrentHashMap
ConcurrentMap<Key, Value> numbers = new ConcurrentHashMap<>();

Nel codice sopra, abbiamo creato una ConcurrentMap chiamata numbers.

qui,

  • Key - identificatore unico utilizzato per associare ogni elemento (valore) nella mappa

  • Value - elemento associato alla chiave nella mappa

Metodi di ConcurrentMap

L'interfaccia ConcurrentMap contiene tutti i metodi dell'interfaccia Map. Questo perché Map è il superinterfaccia dell'interfaccia ConcurrentMap.

Oltre a tutti questi metodi, ecco i metodi specifici dell'interfaccia ConcurrentMap.

  • putIfAbsent() - Se la chiave specificata non è ancora associata a qualsiasi valore, inserisce la chiave/valore specificato nella mappa.

  • compute() - Calcola la voce (mappatura chiave/valore) specificata per la chiave specificata e il valore precedentemente mappato.

  • computeIfAbsent() - Se la chiave non è ancora mappata a qualsiasi valore, calcola un valore per la chiave specificata utilizzando la funzione specificata.

  • computeIfPresent() - Se la chiave è già mappata a un valore specificato, calcola una nuova voce (mappatura chiave/valore) per la chiave specificata.

  • forEach() - Accede a tutti gli elementi della mappa e esegue l'operazione specificata.

  • merge() - Se la chiave è già mappata a un valore, unisce il nuovo valore con il vecchio valore associato alla chiave. Se la chiave non è ancora mappata, questo metodo associa il valore specificato alla chiave.

Implementazione di ConcurrentMap in ConcurrentHashMap

import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
class Main {
    public static void main(String[] args) {
        //使用ConcurrentHashMap创建ConcurrentMap
        ConcurrentMap<String, Integer> numbers = new ConcurrentHashMap<>();
        // 插入元素到map
        numbers.put("Two", 2);
        numbers.put("One", 1)}
        numbers.put("Three", 3);
        System.out.println("ConcurrentMap: " + numbers);
        //Accedere al valore specificato della chiave
        int value = numbers.get("One");
        System.out.println("Valore visitato: " + value);
        //Eliminare il valore specificato della chiave
        int removedValue = numbers.remove("Two");
        System.out.println("Valore eliminato: " + removedValue);
    }
}

Risultato di output

ConcurrentMap: {One=1, Two=2, Three=3}
Valore visitato: 1
Valore eliminato: 2

Per ulteriori informazioni su ConcurrentHashMap, visitareJava ConcurrentHashMap.