Java الإنترفيس Set في جافا

مقدمة

الإنترفيس Set يرث من الإنترفيس Collection و هو عبارة عن Collection فكرتها تخزين مجموعة متتالية من العناصر، كل عنصر فيها يملك قيمة مختلفة.

الفرق الأساسي بينه و بين الإنترفيس List هو أنه لا يمكنه تخزين نفس القيمة في أكثر من عنصر. إذاً هنا لا يمكن وجود نفس القيمة في أكثر من عنصر.

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


نظرة عامة

  • بشكل عام, يستخدم لإنشاء مصفوفة ليس لها حجم محدد.
  • لا يمكنه إحتواء عناصر متكررة, أي لا يمكنه تخزين كائنين عندهم نفس النوع و نفس القيمة.
  • يملك الدوال التي ورثها من الإنترفيس Collection فقط.
  • بعض الدوال التي يملكها ترمي الإستثناء UnsupportedOperationException إذا تم استخدامهم بطريقة خاطئة.
  • يرمى الإستثناء ClassCastException في حال كان لا يمكن تحويل نوع الكائن إلى نوع آخر.

دوال الإنترفيس Set

الجدول التالي يحتوي على دوال الإنترفيس Set.

الدالة مع تعريفها
public boolean add(Object o) تضيف كائن جديد في الكائن الذي قام باستدعائها.
ترجع true إذا تمت الإضافة بنجاح.
public boolean addAll(Collection c) تضيف جميع العناصر الموجودة في الكائن c بالترتيب في آخر الكائن الذي قام باستدعائها.
ترجع true إذا تمت الإضافة بنجاح.
public void clear() تمسح جميع العناصر الموجودة في الكائن الذي قام باستدعائها.
public boolean contains(Object obj) ترجع true إذا كان الكائن الذي قام باستدعائها يحتوي على الكائن الذي نضعه لها كـ Argument.
public boolean containsAll(Collection c) ترجع true إذا كان الكائن الذي قام باستدعائها يحتوي على جميع العناصر الموجودة في الكائن c.
public boolean equals(Object obj) ترجع true في حال كان الكائن الذي قام باستدعائها يتطابق مع الكائن الذي نمرره لها كـ Argument.
public int hashCode() ترجع الـ Hash Code للكائن الذي قام باستدعائها.
public boolean isEmpty() ترجع true في حال كان الكائن الذي قام باستدعائها فارغاً.
public Iterator iterator() ترجع كائن نوعه Iterator يحتوي على جميع عناصر الكائن الذي قام باستدعائها.
public boolean remove(Object o) تحذف أول عنصر يتم إيجاده في الكائن الذي قام باستدعائها في حال كان يتطابق مع الكائن الذي نمرره لها كـ Argument.
ترجع true إذا تم حذف العنصر بنجاح.
public boolean removeAll(Collection c) تحذف مجموعة متتالية من العناصر الموجود في الكائن الذي قام باستدعائها في حال كانت تتطابق مع كائن الـ Collection الذي نمرره لها كـ Argument.
ترجع true إذا تم حذف جميع العناصر بنجاح.
public boolean retainAll(Collection c) تبقي عناصر الكائن الذي قام باستدعائها في حال كانت موجودة في عناصر الكائن c الذي نمرره لها كـ Argument, و تحذف جميع العناصر الأخرى.
public int size() ترجع عدد العناصر الموجودة في كائن الـ Interface.
public Object[] toArray() ترجع مصفوفة نوعها Object تحتوي على جميع العناصر الموجودة في الكائن الذي قام باستدعائها.
public Object[] toArray(Object array[]) ترجع مصفوفة نوعها Object تحتوي على جميع عناصر الكائن الذي قام باستدعائها و التي عندها نفس نوع المصفوفة التي نمررها لها كـ Argument.

مثال شامل

في المثال التالي قمنا بإنشاء ثلاث كائنات من ثلاث كلاسات مختلفة ترث من الإنترفيس Set.
لاحظ أننا استخدمنا الدالة add() التي ورثتها الكائنات في الأساس من الإنترفيس Set.

Main.java
import java.util.*;		// util هنا قمنا باستدعاء جميع الكلاسات و الإنترفيسات الموجودة في الحزمة
 
public class Main {
 
    public static void main(String[] args) {
 
        // وضعنا فيه ثلاث كائنات o1 إسمه TreeSet هنا قمنا بإنشاء كائن من الكلاس
        TreeSet o1 = new TreeSet();
        o1.add(1);
        o1.add(2);
        o1.add(3);
 
        // وضعنا فيه ثلاث كائنات o2 إسمه HashSet هنا قمنا بإنشاء كائن من الكلاس
        HashSet o2 = new HashSet();
        o2.add(4);
        o2.add(5);
        o2.add(6);
 
        // وضعنا فيه ثلاث كائنات o3 إسمه LinkedHashSet هنا قمنا بإنشاء كائن من الكلاس
        LinkedHashSet o3 = new LinkedHashSet();
        o3.add(7);
        o3.add(8);
        o3.add(9);
 
        // o3 و o2 و o1 هنا قمنا بعرض محتويات الكائنات
        System.out.println("TreeSet elements: " + o1);
        System.out.println("HashSet elements: " + o2);
        System.out.println("LinkedHashSet elements: " + o3);
 
    }
 
}
		

سنحصل على النتيجة التالية عند التشغيل.

TreeSet elements: [1, 2, 3]
HashSet elements: [4, 5, 6]
LinkedHashSet elements: [7, 8, 9] 
		

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة