سؤال

التكرارات الممكنة:
الفرق بين المقارنة () والمقارنة ()
جافا: ما هو الفرق بين تنفيذ المقارنة والمقارنة؟

ما هي المفاتيح الاختلافات بين المقارنة والمقارنة.

وما الذي يفضل على الآخر في أي سيناريوهات؟

شكرًا

محدث - رابط جيد مع مثال !!

http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html

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

المحلول

عندما ينفذ فصلك مماثلة, ، ال compareTo طريقة الفصل هي تحديد الترتيب "الطبيعي" لهذا الكائن. هذه الطريقة ملزمة تعاقدي (على الرغم من عدم مطالبتها) لتكون متوافقة مع طرق أخرى في هذا الكائن ، مثل 0 يجب إرجاع 0 للكائنات عندما تكون .equals() المقارنات العودة صحيح.

أ المقارنة هو تعريفه الخاص لكيفية مقارنة كائنين ، ويمكن استخدامه لمقارنة الكائنات بطريقة قد لا تتماشى مع الترتيب الطبيعي.

على سبيل المثال ، تتم مقارنة السلاسل عمومًا أبجديًا. وهكذا "a".compareTo("b") سوف تستخدم المقارنات الأبجدية. إذا كنت ترغب في مقارنة السلاسل على الطول ، فستحتاج إلى كتابة مقارنة مخصصة.

باختصار ، ليس هناك فرق كبير. كلاهما طرفيان لوسائل مماثلة. بشكل عام التنفيذ القابل للمقارنة للترتيب الطبيعي ، (من الواضح أن تعريف الطلب الطبيعي مفتوح للتفسير) ، واكتب مقارنة لاحتياجات الفرز أو المقارنة الأخرى.

نصائح أخرى

Comparator يوفر وسيلة لك لتوفير منطق مقارنة مخصصة للأنواع التي لا تتحكم فيها.

Comparable يتيح لك تحديد كيفية مقارنة الكائنات التي تقوم بتنفيذها.

من الواضح ، إذا لم يكن لديك تحكم في فصل (أو كنت ترغب في توفير طرق متعددة لمقارنة الكائنات التي لديك التحكم فيها) ثم استخدمها Comparator.

وإلا يمكنك استخدام Comparable.

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