ما هو HashSet؟

HashSet هو نوع بيانات مدمج في Java، وبعبارات عامة يمكنك القول "HashSet عبارة عن مجموعة غير مرتبة من العناصر الفريدة." ألق نظرة على مثال أساسي:يحتوي HashSet على طريقة () في Java - 2
الشكل 1: رسم توضيحي يوضح أمثلة صالحة وغير صالحة لـ HashSet
(قبل المضي قدمًا، نتوقع منك أن تعرف مصطلحات التجزئة وجداول التجزئة .) يمتد HashSet ( يمتد يعني أن الفصل موروث من فئة أخرى) AbstractSet وينفذ واجهة Set. فيما يلي بعض النقاط التي يجب عليك مراعاتها قبل العمل مع HashSets:
  • يقوم بإنشاء مجموعة ( المجموعة تعني وحدة واحدة من الكائنات على سبيل المثال: ArrayList وLinkedList وVector وما إلى ذلك) التي تستخدم جدول التجزئة للتخزين.
  • لا يُسمح بالقيم المكررة في HashSet.
  • يمكنك إدراج قيم "خالية" في HashSet.
  • لا يتم الاحتفاظ بأمر الإدراج. لذا، إذا كنت تريد إدراج العناصر بالترتيب، فستكون HashSet خيارًا سيئًا لمتطلباتك.
  • إذا كنت ترغب في الحصول على/استرداد عنصر في وقت ثابت (O(1)) فإن HashSet هي واحدة من أفضل الطرق التي يمكنك اتباعها.

ما هي طريقة HashSet.contains()؟

HashSet.contains() هي طريقة منطقية للتحقق مما إذا كان العنصر موجودًا في مثيل HashSet أم لا. ببساطة، ما إذا كانت المجموعة تحتوي على العنصر المطلوب. يوفر Java.util.HashSet تنفيذًا فعالاً لذلك. دعنا نوضح لك كيف يمكنك استخدامه بشكل فعال لحل استفساراتك.

يحتوي على () مع الأعداد الصحيحة

import java.util.HashSet;

public class HashSetDemo {
   public static void main(String[] args) {

       // Declare your hash set
       HashSet digits = new HashSet();

       digits.add(0);
       digits.add(1);
       digits.add(2);
       digits.add(3);
       digits.add(4);
       digits.add(5);
       digits.add(null);
       System.out.println("All elements in hashset:\t" + digits);

       // Try adding duplicates
       digits.add(5);
       digits.add(2);
       System.out.println("After adding duplicates: \t" + digits);

       System.out.println("\n-------Using Contains Method-------");
       // Check out if the following digits exist in the hashset
       System.out.println("digits.contains(0) : " + digits.contains(0));
       System.out.println("digits.contains(2) : " + digits.contains(2));
       System.out.println("digits.contains(3) : " + digits.contains(7));
       System.out.println("digits.contains(null) : " + digits.contains(null));
   }
}
انتاج |
جميع العناصر في مجموعة التجزئة: [0, null, 1, 2, 3, 4, 5] بعد إضافة التكرارات: [0, null, 1, 2, 3, 4, 5] ------- استخدام طريقة الاحتواء- ------ digits.contains(0) : أرقام صحيحة. تحتوي على (2) : أرقام صحيحة. تحتوي على (3) : أرقام كاذبة. تحتوي على (خالية) : صحيح

يحتوي على () مع سلاسل

ألقِ نظرة على مثال آخر لأسلوب يحتوي على() مع Strings .
import java.util.HashSet;
public class HashSetDemo {
     public static void main(String[] args) {

	  // Try working with another hash set of String type
	  HashSet rainbow = new HashSet();

        // Adding elements into HashSet using add()
        rainbow.add("Red");
        rainbow.add("Orange");
        rainbow.add("Yellow");
        rainbow.add("Green");
        rainbow.add("Blue");
        rainbow.add("Indigo");
        rainbow.add("Violet");


        // Let's traverse the hashset
        System.out.println("Traversing the rainbow:");
        for (String i : rainbow){
             System.out.println(i);
        }
       // Check out if rainbow contains this color or not
    	 System.out.println("\n-------Using Contains Method-------");

        System.out.println("rainbow.contains(\"Yellow\"): \t" + rainbow.contains("Yellow"));
        System.out.println("rainbow.contains(\"White\"): \t"  + rainbow.contains("White"));
        System.out.println("rainbow.contains(\"Lavender\"): \t"  + rainbow.contains("Lavender"));
        System.out.println("rainbow.contains(\"Red\"): \t"  + rainbow.contains("Red"));

        // Remove a color from rainbow using remove()
        rainbow.remove("Red");

        // Now consume  set contains() method again to check if it's still present
        System.out.println("rainbow.contains(\"Red\"): \t"  + rainbow.contains("Red"));

        System.out.println("\nAfter removing Red: " + rainbow);
	}
}
انتاج |
عبور قوس قزح: أحمر بنفسجي أصفر أزرق نيلي برتقالي أخضر ------- استخدام طريقة -------- Rainbow.contains("Yellow"): true Rainbow.contains("White"): قوس قزح كاذب. يحتوي على ("Lavender"): قوس قزح كاذب. يحتوي على ("Red"): قوس قزح حقيقي. يحتوي على ("Red"): خطأ بعد إزالة اللون الأحمر: [بنفسجي، أصفر، أزرق، نيلي، برتقالي، أخضر]
كما ترون فإن ترتيب الإخراج يختلف عن ترتيب وضع العناصر في Hashset.

خاتمة

الطريقة التي تحتوي على () لـ HashSets هي طريقة سهلة الاستخدام جدًا. ومع ذلك، في حالة وجود أي ارتباك، يمكنك دائمًا الرجوع إلى هذا المنشور. ترميز سعيد! :)