هاشست هي واحدة من التطبيقات الأكثر شعبية من واجهة مجموعة في لغة البرمجة جافا. هذه الفئة عبارة عن مجموعة تحتوي فقط على عناصر فريدة بدون أي ترتيب معين. في هذه المقالة ، سوف ننظر في ترتيب استخدام هاشسيت وميزاته الرئيسية.
المبدأ الأساسي لعملية هاشسيت هو تخزين العناصر في جدول التجزئة. يحتوي كل عنصر على رمز التجزئة الفريد الخاص به ويتم إضافته إلى الموضع المقابل في جدول التجزئة. عند إضافة عنصر جديد إلى مجموعة التجزئة ، يتم التحقق من وجود نفس العنصر بنفس رمز التجزئة. إذا كان هذا العنصر موجودا بالفعل ، فلن تتم إضافة العنصر الجديد.
واحدة من السمات الرئيسية ل هاشسيت هو عدم وجود ترتيب العنصر. هذا يعني أنه عند التكرار من خلال عناصر هاشسيت ، سيتم إرجاعها بأي ترتيب. إذا كان ترتيب العناصر مهم ، تحتاج إلى استخدام تطبيقات أخرى من واجهة مجموعة ، مثل لينكدهاشست أو تريسيت.
توفر هاشست وصولا سريعا جدا إلى العناصر ، نظرا لأن وقت إجراء عمليات إضافة عنصر وحذفه والبحث عنه يكاد يكون مستقلا عن حجم المجموعة. ومع ذلك ، قد يتغير ترتيب العناصر عند إضافة عناصر أو إزالتها ، لذا فإن استخدام هاشست غير مناسب في الحالات التي تريد فيها الحفاظ على ترتيب العناصر.
- هاشسيت في البرمجة: لماذا هناك حاجة إليها وكيف يعمل
- استخدام هاشسيت لتخزين قيم فريدة
- كيفية إضافة عناصر إلى مجموعة التجزئة
- طرق إزالة العناصر من مجموعة التجزئة
- ترتيب عبور عناصر هاشسيت
- هاشست مقابل مجموعات أخرى: كيفية اختيار بنية البيانات الصحيحة
- سؤال وجواب
- كيفية استخدام هاشسيت في البرمجة?
- ما هو ترتيب العناصر في هاشست?
- ما هو تعقيد العمليات في هاشست?
هاشسيت في البرمجة: لماذا هناك حاجة إليها وكيف يعمل
هاشست هي واحدة من تطبيقات واجهة مجموعة في لغة البرمجة جافا. إنها مجموعة لا تحتوي على عناصر مكررة ولا تضمن ترتيبا معينا للعناصر.
لماذا أحتاج إلى هاشسيت? يمكن استخدامه في العديد من المواقف التي تحتاج فيها إلى تخزين الكثير من العناصر الفريدة دون مراعاة الترتيب الذي تمت إضافتها به.
دعونا ننظر إلى المزايا والتطبيقات الرئيسية من هاشست:
- تفرد العناصر: هاشست يتحقق تلقائيا إذا تم تضمين عنصر في المجموعة ولا إضافته إذا كان موجودا بالفعل. هذا مفيد جدا عندما تحتاج إلى إدارة قيم فريدة.
- الوصول السريع إلى العناصر: يستخدم هاشست تجزئة العناصر للبحث السريع. لذلك ، لا يعتمد وقت الوصول إلى العناصر الموجودة في مجموعة التجزئة عمليا على حجم المجموعة.
- الاستخدام الأمثل للذاكرة: لا تخزن هاشست القيم بالترتيب الذي تمت إضافته به ، لذلك لا يلزم وجود ذاكرة إضافية لترتيب العناصر.
ويستند هاشست على استخدام جدول التجزئة. جدول التجزئة عبارة عن مصفوفة ، يمكن أن يحتوي كل عنصر منها على عنصر واحد أو أكثر. يحتوي كل عنصر من عناصر المصفوفة على رمز التجزئة الخاص به ، والذي يتم حسابه بناء على محتوياته. يتم استخدام رمز التجزئة لتحديد فهرس عنصر في صفيف.
عند إضافة عنصر إلى مجموعة تجزئة ، يتم حساب رمز التجزئة الخاص به ويحدد موضعه في المصفوفة. إذا كانت هناك عناصر بالفعل في هذا الموضع ، فسيتم إضافة عنصر جديد إلى هذا الموضع كقائمة مرتبطة. عند البحث عن عنصر في مجموعة التجزئة ، يتم حساب رمز التجزئة الخاص به واستخدامه للبحث في الصف الفرعي المطلوب. إذا تم العثور على عنصر ، يتم إرجاعه. خلاف ذلك ، يتم إرجاع القيمة الفارغة.
من المهم أن نلاحظ أنه إذا كان ترتيب العناصر مهم للتطبيق الخاص بك ، ثم يجب أن لا تستخدم هاشسيت ، لأنه لا يضمن ترتيب العناصر. في هذه الحالة ، من الأفضل استخدام تطبيقات أخرى لواجهة المجموعة ، مثل مجموعة الأشجار.
استخدام هاشسيت لتخزين قيم فريدة
هاشسيت في لغة البرمجة يسمح لك لتخزين القيم الفريدة فقط ويزيل تلقائيا العناصر المكررة من المجموعة. هذا هو أحد هياكل البيانات الأكثر استخداما في المواقف المختلفة.
يوفر هاشست الوصول السريع والبحث عن العناصر ، وذلك بفضل استخدام خوارزمية التجزئة. عند إضافة عنصر إلى مجموعة تجزئة ، يتم حساب رمز التجزئة الخاص به واستخدامه لتحديد موقعه في المجموعة. يتم البحث عن عنصر في مجموعة التجزئة أيضا بواسطة رمز التجزئة الخاص به ، مما يجعل هذه العملية فعالة جدا.
هاشسيت يمكن استخدامها لحل المهام مثل:
- إزالة التكرارات من قائمة أو مجموعة من العناصر.
- التحقق من تفرد العناصر.
- عد عدد القيم الفريدة.
- تصفية العناصر حسب التفرد.
تشمل مزايا استخدام مجموعة التجزئة ما يلي:
- وصول سريع جدا والبحث عن العناصر.
- الإزالة التلقائية للتكرارات.
- سهولة الاستخدام.
ومع ذلك ، ينبغي أن يوضع في الاعتبار أن هاشست لا يضمن الحفاظ على ترتيب العناصر ، والتي قد تكون غير مرغوب فيها في بعض الحالات. إذا كان ترتيب العناصر مهم ، يمكنك استخدام لينكدهاشست ، الذي يخزن العناصر في الترتيب الذي تمت إضافته إلى المجموعة.
في الختام ، يوفر هاشست أداة مريحة لتخزين القيم الفريدة في لغة البرمجة. باستخدامه ، يمكنك العمل بسرعة وكفاءة مع مجموعات البيانات وإزالة التكرارات والبحث عن عناصر فريدة.
كيفية إضافة عناصر إلى مجموعة التجزئة
هاشست هي فئة في لغة البرمجة جافا التي تنفذ واجهة 'مجموعة' ويستخدم التجزئة لتخزين العناصر في مجموعة. يوفر قيما فريدة ولا يحافظ على الترتيب الذي تتم إضافة العناصر به.
لإضافة عناصر إلى مجموعة تجزئة ، يمكنك استخدام طريقة إضافة ().
مثال كود جافا:
استيراد جافا.أوتيل.هاشست;
الطبقة العامة الرئيسية {
العامة ثابت الفراغ الرئيسي (سلسلة[] الحجج) {
// إنشاء كائن هاشست جديد
مجموعة هاشست = هاشست جديد ();
// إضافة عناصر إلى هاشست
تعيين.يضاف ("العنصر 1");
تعيين.يضاف ("العنصر 2");
تعيين.يضاف ("العنصر 3");
تعيين.يضاف ("العنصر 4");
// عناصر هاشست الإخراج
النظام.خارج.برينتلن (مجموعة);
}
}
في هذا المثال ، نقوم بإنشاء كائن هاشسيت جديد وإضافة عدة عناصر إليه باستخدام طريقة إضافة (). ثم نقوم بإخراج محتويات مجموعة التجزئة باستخدام النظام.خارج.طريقة الطباعة ().
ستكون نتيجة تنفيذ البرنامج كما يلي:
[العنصر 1 ، العنصر 2 ، العنصر 3 ، العنصر 4]لاحظ أن ترتيب العناصر في مجموعة التجزئة قد يتغير في كل مرة يتم فيها تنفيذ البرنامج ، لأنه لا يحافظ على الترتيب الذي تمت إضافة العناصر به. وهناك سمة رئيسية من هاشست هو أنه يضمن أن كل قيمة في مجموعة فريدة من نوعها.
إذا حاولت إضافة عنصر مكرر إلى مجموعة التجزئة ، فسيتم تجاهله لأن مجموعة التجزئة لا تسمح بالتكرارات.
وبالتالي ، فإن استخدام طريقة الإضافة () هو أسهل طريقة لإضافة عناصر إلى مجموعة التجزئة.
طرق إزالة العناصر من مجموعة التجزئة
هناك عدة طرق لحذف العناصر في فئة هاشسيت:
إزالة (كائن كائن) - تسمح لك الطريقة بإزالة الكائن المحدد من مجموعة التجزئة. إذا كان الكائن موجودا في المجموعة ، فسيتم حذفه وستعود الطريقة صحيحة. إذا كان الكائن مفقودا من المجموعة ، فإن الطريقة ترجع خطأ.
مسح () - تزيل الطريقة جميع العناصر من مجموعة التجزئة ، مما يجعل المجموعة فارغة.
ريموفيف — مجموعة المسند) - يترك الأسلوب في هاشسيت فقط تلك العناصر الموجودة في المجموعة المحددة. يعود صحيح إذا تغيرت المجموعة ، وخطأ خلاف ذلك.
تسمح لك هذه الطرق بإدارة محتويات مجموعة التجزئة بمرونة وحذف العناصر وفقا لمعايير معينة.
مثال على استخدام طريقة إزالة (كائن كائن):
هاشست الحيوانات = هاشست جديد ();
الحيوانات.إضافة ("القط");
الحيوانات.إضافة ("الكلب");
الحيوانات.إضافة ("الفيل");
الحيوانات.إزالة ("الكلب");
النظام.خارج.برينتلن (الحيوانات) ؛ / / [القط ، الفيل]
Clear واضح():
هاشست الفواكه = هاشست جديد ();
الفواكه.إضافة ("تفاحة");
الفواكه.إضافة ("الموز");
الفواكه.إضافة ("العنب");
الفواكه.واضح();
النظام.خارج.برينتلن (الفواكه.إسمبتي ()) ؛ / / صحيح
- ريموفيف(مرشح المسند):
أرقام هاشست = هاشست جديدة ();
أرقام.إضافة(1);
أرقام.إضافة(2);
أرقام.إضافة (3);
أرقام.إضافة (4);
أرقام.إضافة (5);
أرقام.removeIf(n -> n % 2 == 0);
System.out.println(numbers); // [1, 3, 5]
Пример использования метода retainAll(Collection collection):
HashSet set1 = new HashSet();
set1.add("apple");
set1.add("banana");
set1.add("grape");
HashSet set2 = new HashSet();
set2.add("banana");
set2.add("orange");
set1.retainAll(set2);
System.out.println(set1); // [banana]
Используя эти способы, вы можете легко удалять элементы из HashSet по заданным условиям или очищать множество полностью.
ترتيب عبور عناصر هاشسيت
هاشست هي واحدة من تطبيقات واجهة مجموعة في جافا. على عكس المجموعات المطلوبة ، مثل أريليست أو لينكدليست ، العناصر في هاشست ليس لديها ترتيب معين. هذا يعني أن الترتيب الذي تمت إضافة العناصر به إلى مجموعة التجزئة قد لا يتطابق مع ترتيب العبور.
ويستند التنفيذ الداخلي من هاشست على جدول التجزئة ، والذي يسمح لك لتحقيق أداء البحث عنصر عالية. عند إضافة عنصر إلى مجموعة تجزئة ، يتم وضعه في الجزء المناسب من جدول التجزئة باستخدام دالة تجزئة. عند عبور عناصر هاشسيت ، يعتمد ترتيب العبور على قيمة التجزئة لكل عنصر والحالة الحالية لجدول التجزئة.
هذا يعني أن ترتيب اجتياز عناصر الهاشست سيكون غير مؤكد وقد يتغير بمرور الوقت. بالنسبة لمعظم الحالات ، لا يهم هذا ، نظرا لأن اجتياز العنصر يستخدم عادة للتحقق من وجود عنصر معين في مجموعة أو لإجراء عملية على كل عنصر. ومع ذلك ، إذا كان من المهم بالنسبة لك للحفاظ على ترتيب العناصر أو للحصول على العناصر في ترتيب معين ، يجب عليك استخدام مجموعات أمر مثل أريليست أو لينكدليست.
هاشست مقابل مجموعات أخرى: كيفية اختيار بنية البيانات الصحيحة
عند البرمجة ، من المهم جدا اختيار بنية البيانات المناسبة لكل مهمة محددة. في سياق تخزين العناصر الفريدة ، واحدة من الفئات الأكثر استخداما في جافا هي هاشست.
هاشست هي فئة التي تنفذ واجهة مجموعة ويوفر تخزين عناصر فريدة من نوعها. يعتمد على جدول التجزئة ، مما يجعل عمليات إدراج العناصر وحذفها والبحث عنها فعالة للغاية. ومع ذلك ، نظرا لعدم تعريف ترتيب العناصر في مجموعة التجزئة ، لا يمكن استخدام بنية البيانات هذه إذا كنت تريد الحفاظ على الترتيب الذي يتم إدراج العناصر به.
في بعض الحالات ، قد يكون من المرغوب فيه استخدام بنية بيانات مختلفة ، بدلا من مجموعة التجزئة ، للحفاظ على ترتيب العناصر. فيما يلي بعض الخيارات البديلة:
- لينكدهاشست: هذه الفئة هي البديل من هاشست التي تدعم مجموعة مرتبة من العناصر في الترتيب الذي يتم إدراجها. فإنه يحافظ على الاتصالات بين العناصر ، والذي يسمح لك لفرز بسرعة من خلال العناصر في النظام. غالبا ما يتم استخدام لينكدهاشست عندما تريد الحفاظ على ترتيب العناصر في مجموعة.
- أريليست: هذه الفئة تنفذ واجهة القائمة وهي مجموعة ديناميكية. كما أنه يدعم مجموعة مرتبة من العناصر ، ولديه المرونة لإدراج العناصر وحذفها وتعديلها في أي مكان في القائمة. ومع ذلك ، أريليست يمكن أن تكون غير فعالة للبحث عن العناصر في قوائم كبيرة ، لذلك يجب استخدامه بحذر.
- تريسيت: هذه الفئة تنفذ واجهة سورتيدسيت وهي بنية البيانات على أساس شجرة حمراء سوداء. تقوم مجموعة الأشجار تلقائيا بترتيب العناصر بترتيب المقارنة الطبيعية أو باستخدام المقارنة التي تم تمريرها في المنشئ. هذا مفيد جدا إذا كنت بحاجة إلى تخزين العناصر بطريقة مرتبة.
يعتمد اختيار بنية البيانات الصحيحة على المهمة المحددة التي تحاول حلها. من المهم مراعاة متطلبات كفاءة العمليات والحفاظ على ترتيب العناصر والعوامل الأخرى التي قد تؤثر على الاختيار.
هاشست هي الفئة الرئيسية لتخزين عناصر فريدة في جافا ، ولكن في بعض الأحيان لينكدهاشست ، أريليست ، أو تريسيت قد يكون خيارا أكثر ملاءمة. وينبغي النظر في اختيار بنية البيانات وتلبية متطلبات المهمة المحددة الخاصة بك.
سؤال وجواب
كيفية استخدام هاشسيت في البرمجة?
لاستخدام هاشسيت في البرمجة ، تحتاج أولا إلى إنشاء مثيل من فئة هاشسيت. ثم يمكنك إضافة عناصر إلى مجموعة التجزئة باستخدام طريقة الإضافة (). يتم استخدام طريقة الإزالة () لإزالة العناصر. للتحقق من وجود عنصر في مجموعة التجزئة ، يمكنك استخدام طريقة يحتوي (). من الممكن أيضا الحصول على عدد العناصر في مجموعة التجزئة باستخدام طريقة الحجم (). وأخيرا ، يمكنك تكرار على عناصر هاشسيت باستخدام لكل حلقة أو مكرر.
ما هو ترتيب العناصر في هاشست?
في مجموعة التجزئة ، يتم تخزين العناصر بترتيب عشوائي. لا يعتمد الترتيب على الترتيب الذي تمت إضافة العناصر به وقد يتغير في كل مرة يتم فيها بدء البرنامج. ويرجع ذلك إلى خصوصيات تنفيذ هاشسيت الداخلية على أساس جداول التجزئة. إذا كنت بحاجة إلى الحفاظ على ترتيب معين من العناصر ، يجب عليك استخدام مجموعات أخرى مثل لينكدهاشست أو تريسيت.
ما هو تعقيد العمليات في هاشست?
عادة ما يكون تعقيد العمليات في مجموعة التجزئة ثابتا (س (1)) ، على الرغم من أنه في أسوأ الحالات يمكن أن يصل إلى التعقيد الخطي (س(ن)). يتطلب إدراج العناصر وحذفها والبحث عنها في مجموعة التجزئة في المتوسط وقتا ثابتا ، بغض النظر عن حجم المجموعة. ومع ذلك ، في حالة الاصطدامات (عندما يكون للعناصر المختلفة نفس قيمة التجزئة) ، قد ينخفض الأداء ، وقد تستغرق العمليات وقتا خطيا. لذلك ، يوصى باختيار وظيفة تجزئة جيدة لتقليل الاصطدامات.