مقدمة
الكلاس 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
.