Java ConcurrentMap 接口 - Java教程

由网友 大卫 发布 阅读 14

Java ConcurrentMap 接口 - Java教程

在本教程中,我们将学习Java ConcurrentMap接口及其方法。

Java集合框架的ConcurrentMap接口提供了线程安全的映射。 也就是说,多个线程可以一次访问该映射,而不会影响映射中条目的一致性。

ConcurrentMap 被称为同步map。

它继承了Map接口

实现ConcurrentMap的类

由于ConcurrentMap是接口,因此无法从中创建对象。

为了使用ConcurrentMap接口的功能,我们需要使用实现该接口的类ConcurrentHashMap。

Java ConcurrentHashMap接口扩展了Java ConcurrentMap接口。

如何使用ConcurrentMap?

要使用ConcurrentMap,我们必须先导入java.util.concurrent.ConcurrentMap软件包。导入包后,将按照以下方法创建并发映射。

// ConcurrentHashMap类的使用
CocurrentMap<Key, Value> numbers = new ConcurrentHashMap<>();

在上面的代码中,我们创建了一个名为numbers的ConcurrentMap。

这里,

  • Key - 用于关联map中每个元素(值)的唯一标识符

  • Value - map中与键相关联的元素

ConcurrentMap的方法

ConcurrentMap接口包含Map接口的所有方法。 这是因为Map是ConcurrentMap接口的超级接口。

除了所有这些方法,以下是特定于ConcurrentMap接口的方法。

  • putIfAbsent() - 如果指定的键尚未与任何值关联,则将指定的键/值插入到映射中。

  • compute() - 计算指定键及其先前映射值的条目(键/值映射)。

  • computeIfAbsent() - 如果键尚未与任何值映射,则使用指定函数为指定键计算一个值。

  • computeIfPresent() - 如果已使用指定值映射键,则为指定键计算新条目(键/值映射)。

  • forEach() - 访问map的所有条目并执行指定的操作。

  • merge() -如果指定键已经映射到某个值,则将指定的新值与指定键的旧值合并。如果键还没有映射,该方法将指定的值与键关联。

ConcurrentHashMap中ConcurrentMap的实现

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);

        //访问指定的键
        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

Java NavigableMap 接口 Java EnumMap