1. مشكلة
1. كيف تستخدم Hashset و Treeset Hashcode () والمساواة () طرق
2.
2. الجواب:
1. يتم تنفيذ Hashset من خلال HashMap ، يتم تنفيذ Treeset من خلال Treemap ، ولكن Set يستخدم فقط مفتاح الخريطة.
2. مفتاح ومجموعة الخريطة على حد سواء لهما ميزة مشتركة ، وهي تفرد المجموعة. تريماب لديه ترتيب إضافي.
3. يتم استخدام Hashcode و Equal () ل hashmap. لأنه لا توجد حاجة إلى الفرز ، فأنت بحاجة فقط إلى الانتباه إلى تحديد المواقع والتفرد.
يتم استخدام A.HashCode لحساب قيمة التجزئة ، ويتم استخدام قيمة التجزئة لتحديد فهرس جدول التجزئة.
ب. يقوم فهرس في جدول التجزئة بتخزين قائمة مرتبطة ، لذلك يتعين عليك الحلقة من خلال الطريقة المتساوية لمقارنة كل كائن على السلسلة قبل أن تتمكن حقًا من تحديد موقع الإدخال المقابل لقيمة المفتاح.
عندما يكون C.Put ، إذا لم يكن جدول التجزئة موجودًا ، فأضف إدخالًا قبل القائمة المرتبطة. إذا كانت موجودة ، استبدل القيمة في الإدخال وأرجع القيمة القديمة.
د. عند الكتابة فوق hashcode () و equal () من المفتاح ، احرص على عدم ربطها بخصائص قابلة للتغيير. خلاف ذلك ، بعد تغيير العقار ، سيتغير رمز التجزئة وسيكون متساوًا أيضًا خطأ ، بحيث لن يتم العثور عليه في الخريطة. علاوة على ذلك ، لا يمكن إصدار مثل هذا الكائن لأنه لا يمكن العثور عليه ، والذي سيصبح مرجعًا غير صالح (أي ما يعادل تسرب الذاكرة).
4. بما أن Treemap يتطلب الفرز ، هناك حاجة إلى مقارنة لمقارنة حجم القيمة الرئيسية. بالطبع ، يتم وضعه أيضًا باستخدام المقارنة.
يمكن تحديد A. Comparator عند إنشاء TreeMap ، ثم استخدم Comparator.compare عند الفرز
ب. إذا لم يتم تحديد المقارنة أثناء الإنشاء ، فسيتم استخدام طريقة key.compareto () ، والتي تتطلب المفتاح لتنفيذ الواجهة المماثلة.
يتم تنفيذ C.TreeMap باستخدام بنية بيانات الأشجار ، لذلك يمكن إكمال تحديد المواقع باستخدام واجهة المقارنة.
استيراد java.util.hashset ؛ استيراد java.util.iterator ؛ الفئة العامة wpsklhashset {// استخدام set في java (الكائنات المكررة غير مسموح بها): السلسلة الثابتة العامة (A string [] سلسلة ("B") ؛ hashset.add (a) ؛ hashset.add (b) ؛ system.out.println (hashset.size ()) ؛ String Cz = hashset.add (c)؟ "هذا الكائن غير موجود": "موجود بالفعل" ؛ system.out.println ("اختبار ما إذا كان يمكن إضافة كائن"+cz) ؛ system.out.println (hashset.isempty ()) بينما (ir.hasnext ()) {system.out.println (ir.next ()) ؛} // اختبار ما إذا كان يمكن لأي كائن حذف system.out.println (hashset.remove ("a") ir = hashset.iterator () ؛ بينما (ir.hasnext ()) {system.out.println (ir.next ()) ؛}}}/*** من خلال هذا البرنامج ، يمكنك أيضًا اختبار اضطراب العناصر المضافة لمجموعة الأشجار وترتيب الإخراج*/strate java.utele.treeset Treeset () ؛ Tree.Add ("China") ؛ Tree.Add ("America") ؛ Tree.Add ("Japan") ؛ Tree.Add ("Chinese") ؛ iterator iter = tree.iterator () ؛ بينما (iter.hasnext ()) {system.out.println (iter.next ()) ؛}}}وأيضًا ، أقوم بتشغيل بعض الاختلافات الأخرى (بفضل صديقي أنديجولين الذي "يعرف بايدو"):
1. يتم تنفيذ Treeset بواسطة شجرة ثنائية المؤتمر. يتم فرز البيانات في Treeset تلقائيًا ولا يُسمح بالقيم الفارغة.
2. يتم تنفيذ hashset بواسطة جدول التجزئة. البيانات في hashset غير مرتبة. يمكنك وضع Null ، ولكن يمكنك فقط وضع واحدة فارغة. لا يمكن تكرار القيم في كلا ، تمامًا مثل القيد الفريد في قاعدة البيانات.
3. يتطلب hashset أن يكون الكائن الموضوق تنفيذ طريقة hashcode (). يتم تمييز الكائن الموضوعة برمز HashCode ، ويكون كائن HashCode مع نفس المحتوى له نفس الرمز ، لذلك لا يمكن تكرار المحتوى الموضح. ولكن يمكن وضع كائنات من نفس الفئة في حالات مختلفة.
لخص
ما سبق هو كل محتوى هذه المقالة حول الفرق بين طرق استخدام Hashset و Treeset ، وآمل أن يكون مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!