خريطة التجزئة في Java

⚡ ملخص ذكي

خريطة التجزئة في Java يخزن البيانات على شكل أزواج فريدة من المفاتيح والقيم، والتي يمكن استرجاعها بسرعة باستخدام المفتاح. وهو يحتفظ بمراجع الكائنات بدلاً من القيم الأولية، لذا تُستخدم فئات التغليف، ويوفر طرقًا مثل put و get و remove و containsKey.

  • 🗝️ تم تعريف HashMap: يخزن مفاتيح فريدة مرتبطة بقيم لاسترجاعها بسرعة باستخدام المفتاح.
  • 📦 مراجع الكائنات: يحتوي على الكائنات فقط، لذا استخدم فئات التغليف مثل Integer بدلاً من الأنواع الأولية.
  • 🔧 الأساليب الأساسية: تقوم الدالة put() بتخزين زوج من البيانات، بينما تقوم الدالة get() باسترجاع قيمة، وتقوم الدالة remove() بالحذف باستخدام المفتاح.
  • 🔍 عمليات البحث: تقوم الدوال containsKey() و keySet() و values() و isEmpty() بفحص محتويات الخريطة.
  • 🧪 أمثلة: تقوم البرامج النموذجية بإنشاء خريطة، وطباعتها، وإزالة إدخال بواسطة مفتاح.

خريطة التجزئة في Java

ما هو Hashmap في Java?

تحدد HashMap بشكل أساسي مفاتيح فريدة إلى المقابلة القيم والتي يمكن استرجاعها في أي لحظة.

خريطة التجزئة في Java

ميزات Java خريطة التجزئة

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

ب) إذا لا يوجد عنصر موجود في الخريطة، فإنه سيتم رمي "NoSuchElementException'.

ج) متاجر HashMap فقط مراجع الكائن. ولهذا السبب، من المستحيل استخدامه أنواع البيانات البدائية مثل double أو int. استخدم فئة الغلاف (مثل Integer أو Double) في حين أن.

ميزات Java خريطة التجزئة

استخدام HashMaps في Java برامج:

فيما يلي طريقتان لإعلان خريطة التجزئة:

HashMap<String, Object> map = new HashMap<String, Object>();
HashMap x  = new HashMap();

طرق الهاشماب الهامة

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

Java مثال الهاشماب

فيما يلي مثال على تنفيذ Java Hash Map:

import java.util.HashMap;
import java.util.Map;
public class Sample_TestMaps{
  public static void main(String[] args){
    Map<String, String> objMap = new HashMap<String, String>();
    objMap.put("Name", "Suzuki");
    objMap.put("Power", "220");
    objMap.put("Type", "2-wheeler");
    objMap.put("Price", "85000");
    System.out.println("Elements of the Map:");
    System.out.println(objMap);
  }
}

الإخراج:

Elements of the Map:
{Type=2-wheeler, Price=85000, Power=220, Name=Suzuki}

مثال: إزالة قيمة من HashMap استنادًا إلى المفتاح

import java.util.*;
public class HashMapExample {
   public static void main(String args[]) {
   // create and populate hash map
   HashMap<Integer, String> map = new HashMap<Integer, String>();
   map.put(1,"Java");
   map.put(2, "Python");
   map.put(3, "PHP");
   map.put(4, "SQL");
   map.put(5, "C++");
   System.out.println("Tutorial in Guru99: "+ map);
   // Remove value of key 5
   map.remove(5);
   System.out.println("Tutorial in Guru99 After Remove: "+ map);
   }
}

الإخراج:

Tutorial in Guru99: {1=Java, 2=Python, 3=PHP, 4=SQL, 5=C++}
Tutorial in Guru99 After Remove: {1=Java, 2=Python, 3=PHP, 4=SQL}

دعنا نطرح بعض الاستفسارات على Hash Map نفسها للتعرف عليها بشكل أفضل

س: إذن يا سيد هاش ماب، كيف يمكنني معرفة ما إذا كان قد تم تخصيص مفتاح معين لك؟

ج: رائع، يمكنك استخدام طريقة يحتوي على مفتاح (Object KEY) معي، وسوف تقوم بإرجاع قيمة منطقية إذا كان لدي قيمة للمفتاح المحدد.

س: كيف يمكنني العثور على جميع المفاتيح المتوفرة والموجودة على الخريطة؟

ج: لدي طريقة تسمى باسم مجموعة المفاتيح() الذي سيعيد كافة المفاتيح الموجودة على الخريطة. في المثال أعلاه، إذا كتبت سطرًا كـ -
System.out.println(objMap.keySet());

سوف يعود ا الناتج كما-
[الاسم، النوع، الطاقة، السعر]

وبالمثل، إذا كنت بحاجة إلى كافة القيم فقط، لدي طريقة القيم().
System.out.println(objMap.values());

سوف يعود ا الناتج كما-
[سوزوكي، عجلتين، 2، 220]

س: لنفترض أنني بحاجة إلى إزالة مفتاح معين فقط من الخريطة، فهل أحتاج إلى حذف الخريطة بأكملها؟

ج: لا يا صديقي!! عندي طريقة إزالة(Object KEY) الذي سيؤدي إلى إزالة زوج القيمة الرئيسية هذا فقط.

س: كيف يمكننا التحقق مما إذا كنت تحتوي بالفعل على بعض أزواج القيمة الرئيسية؟

ج: فقط تأكد هل أنا فاضي أم لا!! باختصار استخدم فارغ() أسلوب ضدي..

الأسئلة الشائعة

تُعدّ HashMap غير متزامنة وتسمح بمفتاح فارغ واحد وقيم فارغة متعددة، مما يجعلها أسرع للاستخدام أحادي الخيوط. أما Hashtable فهي متزامنة ولا تسمح بمفاتيح أو قيم فارغة، مما يجعلها آمنة للاستخدام متعدد الخيوط ولكنها أبطأ.

نعم. تسمح خريطة التجزئة (HashMap) بمفتاح فارغ واحد فقط، وبأي عدد من القيم الفارغة. محاولة إضافة مفتاح فارغ ثانٍ ستستبدل ببساطة القيمة المرتبطة بالمفتاح الفارغ الموجود.

لا، لا يضمن HashMap أي ترتيب لمفاتيحه. إذا كنت بحاجة إلى ترتيب الإدخال، فاستخدم LinkedHashMap، وإذا كنت بحاجة إلى ترتيب مُرتب حسب المفتاح، فاستخدم TreeMap بدلاً من ذلك.

يمكن للذكاء الاصطناعي تحليل أنماط الوصول مثل عمليات البحث والترتيب واحتياجات التزامن، ثم التوصية باستخدام HashMap أو TreeMap أو LinkedHashMap أو ConcurrentHashMap، إلخ.ping يختار المطورون المجموعة الأكثر كفاءة لحالة استخدامهم.

نعم. يمكن للتحليل المدعوم بالذكاء الاصطناعي أن يحدد HashMap المشترك الذي يتم الوصول إليه بواسطة خيوط متعددة بدون تزامن، ويوصي باستخدام ConcurrentHashMap أو القفل الخارجي لمنع حالات التنافس وتلف البيانات.

تلخيص هذه التدوينة بـ: