مقارنة الأداء بين TreeSet و HashSet في Java
يشرح هذا البرنامج التعليمي جميع الاختلافات والميزات المشتركة بين < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" > TreeSet< / a>< / span> و HashSet. في الواقع ، هذا سؤال شائع جدا في مجموعات جافا ، مثل ArrayList< / span> مقابل نمط المتجه < / span >< / a> و HashTable< / span> مقابل نمط HashMap< / span>. ربما يكون الاختلاف الأكثر أهمية هو performance.TreeSet مقابل HashSet< / h2>1) < / span >< span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" يوفر >HashSet وقت أداء متسقا للعمليات الأساسية مثل: إضافة ، إزالة< / span> ، نمط < / span >< span = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >يحتوي على < / سبان> و < نمط الامتداد = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الحجم< / الامتداد>. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashSet< / span> أسرع من نمط TreeSet< / span> وسيكون اختيارا جيدا جدا إذا لم تكن بحاجة إلى فرز العناصر ، لأن HashSet< / span> ليس لديه نظام فرز. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >مجموعة الشجرةالامتداد> وقت السجل (n) المضمون للعمليات الأساسية (< span style = "font-family:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >إضافة< / سبان>, < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >إزالة< / span> < / span > et   < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >يحتوي علىسبان>).
2) < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashSet< / span> < / span> لا يضمن فرز العناصر. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" يضمن >TreeSet< / span> ترتيب العناصر بترتيب تصاعدي أو تعريفها بواسطة interface قابل للمقارنة< / span >< / a> أو أيا كان ما تحدده في المنشئ المحدد بواسطة واجهة المقارنة< / span >< / a> من Java.
< / div>3) يعتمد أداء الاجتياز على السعة الأولية وعامل الحمل لنمط HashSet< / span>. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" لا يحتوي >TreeSet على معلمات تؤثر على أداء الدورة التدريبية.
4) TreeSet طرقا لا تحتوي على نمط HashSet : < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الأول () < / span > ، < span style = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >last(), headSet () < / span> و tailSet () < / span >.
5) < span style = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashSet يستخدم الطريقة < نمط الامتداد = "اللون: أزرق ؛ عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >يساوي ()< / امتداد> لمقارنة كائنين واكتشاف الكائنات المكررة. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" يستخدم >TreeSet < نمط الامتداد = "اللون: أزرق ؛ عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قارن بين () < / الامتداد >. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" ترجع >equals() true إذا كان كلا الكائنين متساويين و compareTo () < / span> صفر.< / div>أوجه التشابه بين TreeSet و HashSet في نمط Java< / h2 >< div>HashSet و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >مجموعة الشجرةالامتداد> لديك الكثير من الأشياء الشائعة ، دعنا نلقي نظرة:
1) كلاهما ينفذ الواجهة java.util.Set ، CE< / SPAN>< / SPAN> مما يعني أنها لا تسمح بإدراج عناصر مكررة.
2) لا تتم مزامنة التطبيقين. يمكنك جعلها متزامنة باستخدام النمط Collections.synchronizedSet().
3) إذا كنت تريد مجموعة مرتبة ، فمن الأسرع إضافة عناصر إلى HashSet ثم قم بتحويلها إلى نمط مجموعة الشجرةالامتداد> من إنشاء نمط TreeSet وإضافة عناصر.
في النهاية ، يمكننا القول أن اختيار الاستخدام يعتمد تماما على احتياجاتك.
مثال على HashSet:
import java.util.HashSet;
مثال فئة عامة {
الفراغ العام الثابت الرئيسي (سلسلة [] args) {
HashSet< سلسلة> hset = HashSet جديد< سلسلة> (); <عدد صحيح><عدد صحيح>
hset.add("1");
hset.add("3");
hset.add("2");
hset.add("5");
ل (السلسلة s: hset) < br / > System.out.println (s) ؛
}
}
النتيجة:
3
2
1
5
TreeSet مثال:
import java.util.TreeSet;
مثال فئة عامة {
الفراغ العام الثابت الرئيسي (سلسلة [] args) {
TreeSet< سلسلة> tset = مجموعة الأشجار الجديدة< سلسلة> ();
tset.add("1");
tset.add("3");
tset.add("2");
tset.add("5");
ل (سلسلة s: tset)
System.out.println (s) ؛ <عدد صحيح><عدد صحيح>
}
}
النتيجة:
1
2
3
5
عدد صحيح>عدد صحيح>
المراجع:
الفرق بين HashSet و TreeSet في Java
Hashset vs Treeset
< / div>
3) يعتمد أداء الاجتياز على السعة الأولية وعامل الحمل لنمط HashSet< / span>. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" لا يحتوي >TreeSet على معلمات تؤثر على أداء الدورة التدريبية.
4) TreeSet طرقا لا تحتوي على نمط HashSet : < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >الأول () < / span > ، < span style = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >last(), headSet () < / span> و tailSet () < / span >.
5) < span style = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashSet يستخدم الطريقة < نمط الامتداد = "اللون: أزرق ؛ عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >يساوي ()< / امتداد> لمقارنة كائنين واكتشاف الكائنات المكررة. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" يستخدم >TreeSet < نمط الامتداد = "اللون: أزرق ؛ عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قارن بين () < / الامتداد >. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" ترجع >equals() true إذا كان كلا الكائنين متساويين و compareTo () < / span> صفر.< / div>أوجه التشابه بين TreeSet و HashSet في نمط Java< / h2 >< div>HashSet و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >مجموعة الشجرةالامتداد> لديك الكثير من الأشياء الشائعة ، دعنا نلقي نظرة:
5) < span style = "عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >HashSet يستخدم الطريقة < نمط الامتداد = "اللون: أزرق ؛ عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >يساوي ()< / امتداد> لمقارنة كائنين واكتشاف الكائنات المكررة. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" يستخدم >TreeSet < نمط الامتداد = "اللون: أزرق ؛ عائلة الخط: " ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قارن بين () < / الامتداد >. < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" ترجع >equals() true إذا كان كلا الكائنين متساويين و compareTo () < / span> صفر.< / div>
أوجه التشابه بين TreeSet و HashSet في نمط Java< / h2 >< div>HashSet و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >مجموعة الشجرةالامتداد> لديك الكثير من الأشياء الشائعة ، دعنا نلقي نظرة:
1) كلاهما ينفذ الواجهة java.util.Set ، CE< / SPAN>< / SPAN> مما يعني أنها لا تسمح بإدراج عناصر مكررة.
2) لا تتم مزامنة التطبيقين. يمكنك جعلها متزامنة باستخدام النمط Collections.synchronizedSet().
3) إذا كنت تريد مجموعة مرتبة ، فمن الأسرع إضافة عناصر إلى HashSet ثم قم بتحويلها إلى نمط مجموعة الشجرةالامتداد> من إنشاء نمط TreeSet وإضافة عناصر.
في النهاية ، يمكننا القول أن اختيار الاستخدام يعتمد تماما على احتياجاتك.
3) إذا كنت تريد مجموعة مرتبة ، فمن الأسرع إضافة عناصر إلى HashSet ثم قم بتحويلها إلى نمط مجموعة الشجرةالامتداد> من إنشاء نمط TreeSet وإضافة عناصر.
في النهاية ، يمكننا القول أن اختيار الاستخدام يعتمد تماما على احتياجاتك.
مثال على HashSet:
import java.util.HashSet;TreeSet مثال:
مثال فئة عامة {
الفراغ العام الثابت الرئيسي (سلسلة [] args) {
HashSet< سلسلة> hset = HashSet جديد< سلسلة> (); <عدد صحيح><عدد صحيح>
hset.add("1");
hset.add("3");
hset.add("2");
hset.add("5");
ل (السلسلة s: hset) < br / > System.out.println (s) ؛
}
}
النتيجة:
3
2
1
5
import java.util.TreeSet;المراجع:
مثال فئة عامة {
الفراغ العام الثابت الرئيسي (سلسلة [] args) {
TreeSet< سلسلة> tset = مجموعة الأشجار الجديدة< سلسلة> ();
tset.add("1");
tset.add("3");
tset.add("2");
tset.add("5");
ل (سلسلة s: tset)
System.out.println (s) ؛ <عدد صحيح><عدد صحيح>
}
}
النتيجة:
1
2
3
5
عدد صحيح>عدد صحيح>
الفرق بين HashSet و TreeSet في Java
Hashset vs Treeset