English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدليل، سنتعلم واجهة Java ConcurrentMap ومETHODS الخاصة بها.
واجهة ConcurrentMap في إطار Java Collection تقدم خريطة آمنة من حيث التوازي. أي أن عدة threads يمكنها الوصول إلى هذا الخريطة مرة واحدة دون التأثير على تزامن عناصر الخريطة.
يُطلق على ConcurrentMap اسم خريطة متزامنة.
إنها تنحدر منواجهة Map.
بما أن ConcurrentMap هي واجهة، لا يمكن إنشاء أهداف منها.
لإستخدام وظائف واجهة ConcurrentMap، يجب علينا استخدام فئة ConcurrentHashMap التي تحقق هذا الواجهة.
لإستخدام 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() - زيارة جميع المدخلات في 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); //Access the specified key int value = numbers.get("One"); System.out.println("Visited value: " + value); //Delete the value of the specified key int removedValue = numbers.remove("Two"); System.out.println("Deleted value: " + removedValue); } }
Output Result
ConcurrentMap: {One=1, Two=2, Three=3} Visited value: 1 Deleted value: 2
To learn more about ConcurrentHashMap, please visitJava ConcurrentHashMap.