English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом руководстве мы будем изучать интерфейс Java ConcurrentMap и его методы.
Интерфейс ConcurrentMap в Java Collection Framework предоставляет безопасные по отношению к многопоточности карты. То есть, несколько потоков могут одновременно доступ к этой карте, не влияя на целостность элементов карты.
ConcurrentMap называется синхронизированным мапом.
Он наследуетИнтерфейс Map.
Поскольку ConcurrentMap является интерфейсом, из него нельзя создать объект.
Чтобы использовать функции интерфейса ConcurrentMap, нам нужно использовать класс ConcurrentMap, который реализует этот интерфейс.
Чтобы использовать ConcurrentMap,我们必须首先导入java.util.concurrent.ConcurrentMap软件包。导入包后,我们将按照以下方法创建并发映射。
// Использование класса ConcurrentHashMap ConcurrentMap<Key, Value> numbers = new ConcurrentHashMap<>();
В上面的 коде мы создали ConcurrentMap под названием numbers.
здесь
Key - уникальный идентификатор, используемый для связи каждого элемента (значения) в карте
Value - элемент, связанный с ключом в карте
Интерфейс ConcurrentMap содержит все методы интерфейса Map. Это потому, что Map является супέρ-интерфейсом интерфейса ConcurrentMap.
Кроме всех этих методов, есть методы, специфичные для интерфейса ConcurrentMap.
putIfAbsent() - Если указанный ключ еще не связан с любым значением, то вставляет указанный ключ/значение в карту.
compute() - Вычисляет элемент (ключ/значение) с указанным ключом и его прежним значением.
computeIfAbsent() - Если ключ еще не связан с любым значением, то вычисляет значение для указанного ключа с использованием указанной функции.
computeIfPresent() - Если ключ уже связан с указанным значением, то для указанного ключа вычисляет новый элемент (ключ/значение).
forEach() - Пройти по всем элементам карты и выполнить указанную операцию.
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.