在本教程中,我们将学习Java ConcurrentMap接口及其方法。
Java集合框架的ConcurrentMap接口提供了线程安全的映射。 也就是说,多个线程可以一次访问该映射,而不会影响映射中条目的一致性。
ConcurrentMap 被称为同步map。
它继承了Map接口。
由于ConcurrentMap是接口,因此无法从中创建对象。
为了使用ConcurrentMap接口的功能,我们需要使用实现该接口的类ConcurrentHashMap。
要使用ConcurrentMap,我们必须先导入java.util.concurrent.ConcurrentMap软件包。导入包后,将按照以下方法创建并发映射。
// ConcurrentHashMap类的使用 CocurrentMap<Key, Value> numbers = new ConcurrentHashMap<>();
在上面的代码中,我们创建了一个名为numbers的ConcurrentMap。
这里,
Key - 用于关联map中每个元素(值)的唯一标识符
Value - map中与键相关联的元素
ConcurrentMap接口包含Map接口的所有方法。 这是因为Map是ConcurrentMap接口的超级接口。
除了所有这些方法,以下是特定于ConcurrentMap接口的方法。
putIfAbsent() - 如果指定的键尚未与任何值关联,则将指定的键/值插入到映射中。
compute() - 计算指定键及其先前映射值的条目(键/值映射)。
computeIfAbsent() - 如果键尚未与任何值映射,则使用指定函数为指定键计算一个值。
computeIfPresent() - 如果已使用指定值映射键,则为指定键计算新条目(键/值映射)。
forEach() - 访问map的所有条目并执行指定的操作。
merge() -如果指定键已经映射到某个值,则将指定的新值与指定键的旧值合并。如果键还没有映射,该方法将指定的值与键关联。
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。