logo

جافا هاشماب

التسلسل الهرمي لفئة Java HashMap

جافا خريطة التجزئة تطبق الطبقة واجهة الخريطة التي تسمح لنا لتخزين زوج المفتاح والقيمة ، حيث يجب أن تكون المفاتيح فريدة. إذا حاولت إدراج المفتاح المكرر، فسوف يحل محل عنصر المفتاح المقابل. من السهل تنفيذ العمليات باستخدام فهرس المفاتيح مثل التحديث والحذف وما إلى ذلك. تم العثور على فئة HashMap فيjava.utilطَرد.

يشبه HashMap في Java فئة Hashtable القديمة، لكنه غير متزامن. فهو يسمح لنا بتخزين العناصر الفارغة أيضًا، ولكن يجب أن يكون هناك مفتاح فارغ واحد فقط. منذ Java 5، يُشار إليه باسمخريطة التجزئة، حيث يشير K إلى المفتاح وV إلى القيمة. إنه يرث فئة AbstractMap وينفذ واجهة الخريطة.

نقطة لنتذكر

  • يحتوي Java HashMap على قيم تعتمد على المفتاح.
  • تحتوي Java HashMap على مفاتيح فريدة فقط.
  • قد تحتوي Java HashMap على مفتاح فارغ واحد وقيم فارغة متعددة.
  • Java HashMap غير متزامن.
  • لا تحتفظ Java HashMap بأي ترتيب.
  • السعة الافتراضية الأولية لفئة Java HashMap هي 16 مع عامل تحميل 0.75.

التسلسل الهرمي لفئة HashMap

كما هو موضح في الشكل أعلاه، تقوم فئة HashMap بتوسيع فئة AbstractMap وتنفيذ واجهة الخريطة.

إعلان فئة HashMap

دعونا نرى إعلان فئة java.util.HashMap.

أين هي إعدادات المتصفح
 public class HashMap extends AbstractMap implements Map, Cloneable, Serializable 

معلمات فئة HashMap

دعونا نرى المعلمات لفئة java.util.HashMap.

    ك: هو نوع المفاتيح التي تحتفظ بها هذه الخريطة.في: إنه نوع القيم المعينة.

منشئو فئة Java HashMap

البناءوصف
خريطة التجزئة()يتم استخدامه لإنشاء HashMap افتراضي.
HashMap(خريطة م)يتم استخدامه لتهيئة خريطة التجزئة باستخدام عناصر كائن الخريطة المحدد m.
HashMap (سعة كثافة العمليات)يتم استخدامه لتهيئة سعة خريطة التجزئة لقيمة العدد الصحيح المحدد، السعة.
HashMap (سعة int، عامل التحميل العائم)يتم استخدامه لتهيئة كل من السعة وعامل التحميل لخريطة التجزئة باستخدام الوسائط الخاصة بها.

طرق فئة Java HashMap

طريقةوصف
باطل واضح ()يتم استخدامه لإزالة كافة التعيينات من هذه الخريطة.
منطقي فارغ ()يتم استخدامه لإرجاع صحيح إذا كانت هذه الخريطة لا تحتوي على تعيينات قيمة المفتاح.
استنساخ الكائن ()يتم استخدامه لإرجاع نسخة سطحية من مثيل HashMap هذا: لا يتم استنساخ المفاتيح والقيم نفسها.
تعيين مجموعة الإدخال ()يتم استخدامه لإرجاع عرض مجموعة التعيينات الموجودة في هذه الخريطة.
تعيين مجموعة المفاتيح ()يتم استخدامه لإرجاع عرض محدد للمفاتيح الموجودة في هذه الخريطة.
وضع V (مفتاح الكائن، قيمة الكائن)يتم استخدامه لإدراج إدخال في الخريطة.
باطلة putAll (خريطة الخريطة)يتم استخدامه لإدراج الخريطة المحددة في الخريطة.
V putIfAbsent (مفتاح K، قيمة V)يقوم بإدراج القيمة المحددة مع المفتاح المحدد في الخريطة فقط إذا لم يتم تحديدها بالفعل.
إزالة V (مفتاح الكائن)يتم استخدامه لحذف إدخال للمفتاح المحدد.
إزالة منطقية (مفتاح الكائن، قيمة الكائن)يقوم بإزالة القيم المحددة مع المفاتيح المحددة المرتبطة بها من الخريطة.
حساب V (مفتاح K، وظيفة إعادة تعيين BiFunction)يتم استخدامه لحساب تعيين للمفتاح المحدد وقيمته المعينة الحالية (أو فارغة إذا لم يكن هناك تعيين حالي).
V computeIfAbsent (مفتاح K، وظيفة تعيين الوظائف)يتم استخدامه لحساب قيمته باستخدام وظيفة التعيين المحددة، إذا لم يكن المفتاح المحدد مرتبطًا بالفعل بقيمة (أو تم تعيينه على قيمة فارغة)، ويدخله في هذه الخريطة ما لم يكن فارغًا.
V computeIfPresent (مفتاح K، وظيفة إعادة تعيين BiFunction)يتم استخدامه لحساب تعيين جديد بالنظر إلى المفتاح وقيمته المعينة الحالية إذا كانت قيمة المفتاح المحدد موجودة وغير فارغة.
منطقية تحتوي على قيمة (قيمة الكائن)تُرجع هذه الطريقة صحيحًا في حالة وجود قيمة مساوية للقيمة داخل الخريطة، وإلا تُرجع خطأ.
منطقي يحتوي على مفتاح (مفتاح الكائن)تُرجع هذه الطريقة صحيحًا في حالة وجود مفتاح مساوٍ للمفتاح داخل الخريطة، وإلا فإنها تُرجع خطأ.
منطقية يساوي (كائن س)يتم استخدامه لمقارنة الكائن المحدد بالخريطة.
باطلة لكل (إجراء BiConsumer)يقوم بتنفيذ الإجراء المحدد لكل إدخال في الخريطة حتى تتم معالجة جميع الإدخالات أو يطرح الإجراء استثناءً.
الحصول على V (مفتاح الكائن)تقوم هذه الطريقة بإرجاع الكائن الذي يحتوي على القيمة المرتبطة بالمفتاح.
V getOrDefault(مفتاح الكائن، V defaultValue)تقوم بإرجاع القيمة التي تم تعيين المفتاح المحدد لها، أو القيمة الافتراضية إذا كانت الخريطة لا تحتوي على تعيين للمفتاح.
منطقي فارغ ()تُرجع هذه الطريقة صحيحًا إذا كانت الخريطة فارغة؛ تُرجع false إذا كانت تحتوي على مفتاح واحد على الأقل.
دمج V (مفتاح K، قيمة V، وظيفة إعادة تعيين BiFunction)إذا لم يكن المفتاح المحدد مرتبطًا بالفعل بقيمة أو مرتبطًا بقيمة فارغة، فسيتم ربطه بالقيمة غير الخالية المحددة.
استبدال V (مفتاح K، قيمة V)يستبدل القيمة المحددة لمفتاح محدد.
استبدال منطقي (مفتاح K، V oldValue، V newValue)يقوم باستبدال القيمة القديمة بالقيمة الجديدة لمفتاح محدد.
استبدال باطلة الكل (وظيفة BiFunction)فهو يستبدل قيمة كل إدخال بنتيجة استدعاء الوظيفة المحددة على هذا الإدخال حتى تتم معالجة جميع الإدخالات أو تقوم الوظيفة بطرح استثناء.
قيم المجموعة ()تقوم بإرجاع عرض مجموعة للقيم الموجودة في الخريطة.
حجم صحيح ()تقوم هذه الطريقة بإرجاع عدد الإدخالات في الخريطة.

مثال جافا HashMap

دعونا نرى مثالاً بسيطًا على HashMap لتخزين زوج المفاتيح والقيمة.

 import java.util.*; public class HashMapExample1{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(4,'Grapes'); System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } } 
اختبره الآن
 Iterating Hashmap... 1 Mango 2 Apple 3 Banana 4 Grapes 

في هذا المثال، نقوم بتخزين عدد صحيح كمفتاح وسلسلة كقيمة، لذلك نستخدمخريطة التجزئةكنوع. اليضع()تقوم الطريقة بإدراج العناصر الموجودة في الخريطة.

للحصول على المفتاح وعناصر القيمة، يجب أن نستدعي التابعين getKey() و getValue(). الخريطة.إدخالتحتوي الواجهة على احصل على مفتاح() و الحصول على قيمة() طُرق. ولكن، يجب علينا استدعاء أسلوب الإدخال () لواجهة الخريطة للحصول على مثيل Map.Entry.

لا يوجد مفتاح مكرر على HashMap

لا يمكنك تخزين المفاتيح المكررة في HashMap. ومع ذلك، إذا حاولت تخزين مفتاح مكرر بقيمة أخرى، فسوف يحل محل القيمة.

 import java.util.*; public class HashMapExample2{ public static void main(String args[]){ HashMap map=new HashMap();//Creating HashMap map.put(1,'Mango'); //Put elements in Map map.put(2,'Apple'); map.put(3,'Banana'); map.put(1,'Grapes'); //trying duplicate key System.out.println('Iterating Hashmap...'); for(Map.Entry m : map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } } 
اختبره الآن
 Iterating Hashmap... 1 Grapes 2 Apple 3 Banana 

مثال Java HashMap لإضافة عناصر ().

هنا، نرى طرقًا مختلفة لإدراج العناصر.

 import java.util.*; class HashMap1{ public static void main(String args[]){ HashMap hm=new HashMap(); System.out.println('Initial list of elements: '+hm); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('After invoking put() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } hm.putIfAbsent(103, 'Gaurav'); System.out.println('After invoking putIfAbsent() method '); for(Map.Entry m:hm.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } HashMap map=new HashMap(); map.put(104,'Ravi'); map.putAll(hm); System.out.println('After invoking putAll() method '); for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } } 
 Initial list of elements: {} After invoking put() method 100 Amit 101 Vijay 102 Rahul After invoking putIfAbsent() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav After invoking putAll() method 100 Amit 101 Vijay 102 Rahul 103 Gaurav 104 Ravi 

مثال Java HashMap لإزالة عناصر ().

هنا، نرى طرقًا مختلفة لإزالة العناصر.

 import java.util.*; public class HashMap2 { public static void main(String args[]) { HashMap map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); map.put(103, 'Gaurav'); System.out.println('Initial list of elements: '+map); //key-based removal map.remove(100); System.out.println('Updated list of elements: '+map); //value-based removal map.remove(101); System.out.println('Updated list of elements: '+map); //key-value pair based removal map.remove(102, 'Rahul'); System.out.println('Updated list of elements: '+map); } } 

انتاج:

 Initial list of elements: {100=Amit, 101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {101=Vijay, 102=Rahul, 103=Gaurav} Updated list of elements: {102=Rahul, 103=Gaurav} Updated list of elements: {103=Gaurav} 

مثال Java HashMap لاستبدال العناصر ().

هنا، نرى طرقًا مختلفة لاستبدال العناصر.

 import java.util.*; class HashMap3{ public static void main(String args[]){ HashMap hm=new HashMap(); hm.put(100,'Amit'); hm.put(101,'Vijay'); hm.put(102,'Rahul'); System.out.println('Initial list of elements:'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(102, 'Gaurav'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replace(101, 'Vijay', 'Ravi'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } System.out.println('Updated list of elements:'); hm.replaceAll((k,v) -> 'Ajay'); for(Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } } } 
 Initial list of elements: 100 Amit 101 Vijay 102 Rahul Updated list of elements: 100 Amit 101 Vijay 102 Gaurav Updated list of elements: 100 Amit 101 Ravi 102 Gaurav Updated list of elements: 100 Ajay 101 Ajay 102 Ajay 

الفرق بين HashSet وHashMap

يحتوي HashSet على قيم فقط بينما يحتوي HashMap على إدخال (مفتاح وقيمة).

مثال Java HashMap: Book

 import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class MapExample { public static void main(String[] args) { //Creating map of Books Map map=new HashMap(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to map map.put(1,b1); map.put(2,b2); map.put(3,b3); //Traversing map for(Map.Entry entry:map.entrySet()){ int key=entry.getKey(); Book b=entry.getValue(); System.out.println(key+' Details:'); System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } } 
اختبره الآن

انتاج:

 1 Details: 101 Let us C Yashwant Kanetkar BPB 8 2 Details: 102 Data Communications and Networking Forouzan Mc Graw Hill 4 3 Details: 103 Operating System Galvin Wiley 6 

مواضيع ذات صلة

كيفية تكرار الخريطة في جافا

كيفية فرز HashMap في جافا

عامل التحميل في HashMap

عمل HashMap في جافا | كيف يعمل هاشماب

الفرق بين HashMap وHashtable

كيفية فرز HashMap حسب القيمة

سش النموذج الكامل

الفرق بين HashSet وHashMap

الفرق بين HashMap وTreeMap

واجهة خريطة جافا