قبل الغوص في الاختلافات، دعونا نراجع بإيجاز ما هما HashSet وTreeSet.
HashSet عبارة عن مجموعة تستخدم جدول التجزئة للتخزين. يقوم بتنفيذ واجهة Set، مما يعني أنه لا يسمح بالعناصر المكررة. العناصر غير مرتبة وغير مصنفة، مما يجعل HashSet مناسبًا للسيناريوهات التي تحتاج فيها إلى البحث السريع والإدراج والحذف.
A TreeSet عبارة عن مجموعة تنفذ واجهة NavigableSet. ويستخدم شجرة حمراء وسوداء للتخزين، مما يعني أنه يتم تخزين العناصر بطريقة مرتبة ومنظمة. لا يسمح TreeSet بتكرار العناصر أيضًا، ولكنه مثالي للمواقف التي تحتاج فيها إلى الحفاظ على الترتيب الطبيعي للعناصر.
HashSet: يستخدم جدول التجزئة داخليًا. يتم استخدام رمز التجزئة الخاص بكل عنصر لتحديد موقع تخزينه. إذا كان هناك عنصران لهما نفس رمز التجزئة، يتم استخدام تقنية تسمى التسلسل أو التحقيق للتعامل مع الاصطدامات.
مثال على الكود:
SethashSet = new HashSet(); hashSet.add("Apple"); hashSet.add("Banana"); hashSet.add("Mango");
TreeSet: يستخدم شجرة حمراء وسوداء داخليًا. يتم وضع كل عنصر وفقًا لترتيبه الطبيعي أو للمقارنة المتوفرة، مما يضمن بقاء الشجرة متوازنة.
مثال على الكود:
SettreeSet = new TreeSet(); treeSet.add("Apple"); treeSet.add("Banana"); treeSet.add("Mango");
لا يسمح كل من HashSet وTreeSet بالعناصر المكررة. ومع ذلك، تختلف طريقة اكتشاف التكرارات. يستخدم HashSet أساليب hashCode () ويساوي ()، بينما يستخدم TreeSet الأسلوب compareTo () أو Comparator.
HashSet مقابل LinkedHashSet: في حين أن HashSet لا يضمن أي طلب، فإن LinkedHashSet يحافظ على ترتيب الإدراج. من ناحية أخرى، يقوم TreeSet بفرز العناصر بشكل طبيعي أو بواسطة مقارن مخصص.
يوضح تشغيل مقتطفات التعليمات البرمجية أدناه الفرق في ترتيب التكرار:
// HashSet Example SethashSet = new HashSet(); hashSet.add("Zebra"); hashSet.add("Apple"); hashSet.add("Mango"); System.out.println("HashSet: " hashSet); // Output may be unordered, e.g., [Apple, Mango, Zebra] // TreeSet Example Set treeSet = new TreeSet(); treeSet.add("Zebra"); treeSet.add("Apple"); treeSet.add("Mango"); System.out.println("TreeSet: " treeSet); // Output will be sorted, e.g., [Apple, Mango, Zebra]
يتلخص الاختيار بين HashSet وTreeSet في احتياجاتك المحددة:
هل لديك أي أسئلة؟ لا تتردد في إسقاط التعليق أدناه!
اقرأ المشاركات المزيد على : أهم 10 اختلافات رئيسية بين HashSet وTreeSet في Java
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3