在本教程中,我們將學習Java ConcurrentMap接口及其方法。
Java集合框架的ConcurrentMap接口提供了線程安全的映射。 也就是說,多個線程可以一次訪問該映射,而不會影響映射中條目的一致性。
ConcurrentMap 被稱為同步map。
它繼承了Map接口。
由于ConcurrentMap是接口,因此無法從中創(chuàng)建對象。
為了使用ConcurrentMap接口的功能,我們需要使用實現(xiàn)該接口的類ConcurrentHashMap。
要使用ConcurrentMap,我們必須先導入java.util.concurrent.ConcurrentMap軟件包。導入包后,將按照以下方法創(chuàng)建并發(fā)映射。
// ConcurrentHashMap類的使用 CocurrentMap<Key, Value> numbers = new ConcurrentHashMap<>();
在上面的代碼中,我們創(chuàng)建了一個名為numbers的ConcurrentMap。
這里,
Key - 用于關聯(lián)map中每個元素(值)的唯一標識符
Value - map中與鍵相關聯(lián)的元素
ConcurrentMap接口包含Map接口的所有方法。 這是因為Map是ConcurrentMap接口的超級接口。
除了所有這些方法,以下是特定于ConcurrentMap接口的方法。
putIfAbsent() - 如果指定的鍵尚未與任何值關聯(lián),則將指定的鍵/值插入到映射中。
compute() - 計算指定鍵及其先前映射值的條目(鍵/值映射)。
computeIfAbsent() - 如果鍵尚未與任何值映射,則使用指定函數(shù)為指定鍵計算一個值。
computeIfPresent() - 如果已使用指定值映射鍵,則為指定鍵計算新條目(鍵/值映射)。
forEach() - 訪問map的所有條目并執(zhí)行指定的操作。
merge() -如果指定鍵已經映射到某個值,則將指定的新值與指定鍵的舊值合并。如果鍵還沒有映射,該方法將指定的值與鍵關聯(lián)。
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentHashMap; class Main { public static void main(String[] args) { //使用ConcurrentHashMap創(chuàng)建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); //訪問指定的鍵 int value = numbers.get("One"); System.out.println("被訪問的值: " + value); //刪除指定鍵的值 int removedValue = numbers.remove("Two"); System.out.println("被刪除的值: " + removedValue); } }
輸出結果
ConcurrentMap: {One=1, Two=2, Three=3} 被訪問的值: 1 被刪除的值: 2
要了解更多信息ConcurrentHashMap,請訪問Java ConcurrentHashMap。