سؤال

إذا كان لدي قائمة بالعناصر التي أود فرزها ، تقدم Java طريقتان للقيام بذلك.

على سبيل المثال ، دعنا نقول أن لدي قائمة بأشياء الأفلام وأرغب في فرزها حسب العنوان.

إحدى الطرق التي يمكنني من خلالها القيام بذلك هي استدعاء إصدار أحادي Argument من طريقة java.util.collection.sort () الثابتة. لذلك أود أن أسمي المجموعات. لكي ينجح هذا ، يجب إعلان فئة الفيلم لتنفيذ واجهة java.lang.comparable ، ويجب تنفيذ الطريقة المطلوبة للمقارنة () داخل هذه الفئة.

هناك طريقة أخرى للفرز وهي من خلال استدعاء الإصدار المكون من اثنين من طريقة java.util.collections.sort () الثابتة مع قائمة الأفلام وكائن java.util.comparator كوسيطات. أود الاتصال بالتجميع. في هذه الحالة ، لن تنفذ فئة الفيلم الواجهة المماثلة. بدلاً من ذلك ، داخل الفصل الرئيسي الذي يبني ويحافظ على قائمة الأفلام نفسها ، سأقوم بإنشاء فئة داخلية تنفذ واجهة java.util.comparator ، وتنفيذ الطريقة المطلوبة المطلوبة (). ثم أقوم بإنشاء مثيل لهذه الفئة وأتصل بإصدار argument من Sort (). إن فائدة هذه الطريقة الثانية هي أنه يمكنك إنشاء عدد غير محدود من مقارنات الفئة الداخلية هذه ، بحيث يمكنك فرز قائمة الكائنات بطرق مختلفة. في المثال أعلاه ، يمكن أن يكون لديك مقارنة أخرى للفرز بحلول العام الذي تم فيه صنع فيلم ، على سبيل المثال.

سؤالي هو ، لماذا تهتم بتعلم كلا الاتجاهين للفرز في جافا ، عندما يقوم الإصدار المكون من مجموعة من collections.sort () بكل شيء بناء على عدة معايير مختلفة؟ سيكون هناك شيء أقل أن تضطر في ذهنك أثناء الترميز. سيكون لديك آلية أساسية واحدة من قوائم الفرز في Java لمعرفة.

هل كانت مفيدة؟

المحلول

واحد هو لما يجب أن يكون حالة شائعة (الإصدار 2nd 2nd java ، البند 12: النظر في التنفيذ Comparable). والآخر ، كما لاحظت ، هو المرونة والكشف العام.

أسئلة ذات صلة

نصائح أخرى

ذلك يعتمد على من يتحكم في الطلب. إذا كان ترتيب كائن هو تفاصيل تنفيذ للكائن ، Comparable أكثر ملاءمة. إذا تم التحكم في ترتيب الكائنات بواسطة المتصل ، فعندئذٍ Comparator أكثر ملاءمة.

لست متأكدًا من أنني أجد ذلك غريبًا. لدي قائمة بالأشياء التي تتمتع بترتيب طبيعي مثل الأرقام. هل أتوقع حقًا أن أخبر واجهة برمجة التطبيقات كيفية مقارنة الأرقام؟ لن أبحث عن طريقة arg ، بشكل حدسي. وهكذا يوجد مماثل.

ولكن بالطبع يمكنك وينبغي أن تكون قادرًا على تحديد ترتيب مختلف ، وبالتالي الطريقة الأخرى. على سبيل المثال ، على الرغم من أن الأرقام لها ترتيب طبيعي ، إلا أنني قد لا أزال أرغب في ترتيب مختلف: على سبيل المثال ، الطلب عن طريق التنازل عن القيمة. وهكذا يوجد المقارن.

وبالطبع ، فإن بعض الأشياء ليس لديها طلب طبيعي مثل الفاكهة ، لكنك قد لا تزال ترغب في طلب قائمة منها. وبالتالي المقارنة ، مرة أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top