إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    Java الكلاس HashSet في جافا

    مقدمة

    الكلاس HashSet يستخدم لتخزين عناصر متتالية, دون مراعاة أي دقة في ترتيب هذه العناصر, كما أنه يسمح بتخزين القيمة null.
    لكنه لا يسمح بتخزين أكثر من عنصر عندهم نفس القيمة, فتجد كل عنصر فيه يملك قيمة مختلفة.

    السبب الوحيد الذي قد يجعلك تستخدم هذا الكلاس هو سرعته العالية في التخزين مقارنة مع باقي الكلاسات الموجودة في المجموعة Set.

    هنا لا يمكنك الوصول لعنصر محدد من عناصر كائن الـ HashSet لأن العناصر هنا لا تملك أرقام Index. لذلك لا يحتوي على أي دالة من دوال get().
    إذاً هنا للوصول إلى عنصر ما عليك المرور على جميع العناصر الأخرى الموجودة في كائن الـ HashSet.


    سبب سرعة الأداء

    كل عنصر يضاف في كائن الـ HashSet يملك hashcode خاص فيه في الذاكرة.
    عندما تحاول على سبيل المثال تخزين عناصر كائن نوعه HashSet في كائن نوعه Iterator, سيتم الوصول لعناصر كائن الـ HashSet مباشرةً من خلال الـ Hash Code الخاص لكل عنصر.


    بناؤه

    public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, Serializable
    	

    إذاً الكلاس HashSet يرث من الكلاس AbstractSet, و يطبق الإنترفيسات Set - Cloneable - Serializable.

    كونستركتورات الكلاس HashSet

    الجدول التالي يحتوي على جميع الكونستركتورات الموجودين في الكلاس HashSet.

    الكونستركتور مع تعريفه
    public HashSet() هذا الكونستركتور الإفتراضي في الكلاس HashSet, يستخدم لإنشاء كائن نوعه HashSet ليس له حجم محدد.
    public HashSet(int initialCapacity) يستخدم هذا الكونستركتور لتحديد حجم كائن الـ ArrayList الأولي.
    الرقم الذي نضعه كـ Argument في هذا الكونستركتور يحدد عدد عناصر كائن الـ ArrayList الذي يمكنه احتوائهم على الأقل.
    public HashSet(int capacity, float fillRatio) يستخدم هذا الكونستركتور لتحديد حجم كائن الـ HashSet الأولي الذي نريده أن يحجز له في الذاكرة.
    الرقم الذي نضعه مكان الباراميتر capacity يحدد عدد العناصر التي يمكن أن يحتويها كائن الـ HashSet, و تذكر أن حجمه يزيد عند الحاجة.
    الرقم الذي نضعه مكان الباراميتر fillRatio يمكن أن يكون بين 0.0f و 1.0f.
    هنا يتم ضرب المتغيرين capacity و fillRatio ببعضهم, ناتج عملية الضرب يحدد متى سيتم زيادة حجم كائن الـ HashSet في الذاكرة.
    public HashSet(Collection c) يستخدم هذا الكونستركتور لإنشاء كائن نوعه HashSet يحتوي على عناصر كائن الـ Collection الذي نمرره له كـ Argument.

    دوال الكلاس HashSet

    الجدول التالي يحتوي على جميع دوال الكلاس HashSet.

    الدالة مع تعريفها
    public boolean add(Object o) تضيف عنصر جديد في كائن الـ HashSet.
    ترجع true إذا تمت الإضافة بنجاح.
    public void clear() تمسح جميع العناصر الموجودة في كائن الـ HashSet.
    public Object clone() تنشئ نسخة من كائن الـ HashSet.
    public boolean contains(Object o) ترجع true إذا كان كائن الـ HashSet يحتوي على القيمة التي نضعها لها كـ Argument.
    public boolean isEmpty() ترجع true في حال كان كائن الـ HashSet فارغاً.
    public boolean remove(Object o) تحذف عنصر محدد من كائن الـ HashSet و ترجعه.
    ترجع true إذا تم حذف الكائن بنجاح, غير ذلك ترجع false.
    public int size() ترجع عدد العناصر الموجودة في كائن الـ HashSet.
    public Iterator iterator() ترجع كائن نوعه Iterator يحتوي على جميع عناصر كائن الـ HashSet.

    مثال شامل

    في المثال التالي قمنا بتعريف كائن نوعه HashSet, إسمه hs, ثم أدخلنا فيه 6 عناصر.

    بعدها قمنا بعرض عناصر الكائن hs, ثم عرضنا عددهم.


    Main.java
    import java.util.HashSet;		// HashSet هنا قمنا باستدعاء الكلاس
     
    public class Main {
     
        public static void main(String[] args) {
     
            // hs إسمه HashSet هنا قمنا بإنشاء كائن من الكلاس
            HashSet hs = new HashSet();
     
            // hs هنا قمنا بإدخال 6 عناصر في الكائن
            hs.add("A");
            hs.add("B");
            hs.add("C");
            hs.add("D");
            hs.add("E");
            hs.add("F");
     
            // hs هنا قمنا بعرض عدد عناصر الكائن
            System.out.println("All elements: " + hs + "\n");
     
            // لاحظ أنه لم يتم تخزينهم بالترتيب الذي أدخلناهم فيه .hs هنا قمنا بعرض عناصر الكائن
            System.out.println("Number of elements: " + hs.size());
     
        }
     
    }
    		

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

    All elements: [D, E, F, A, B, C]
    
    Number of elements: 6 
    		
    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

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