كيفية مقارنة كائنين دون معرفة عن نوعهما الحقيقي
-
21-09-2019 - |
سؤال
لا بد لي من تنفيذ قائمة مرتبطة واحدة ولكن يجب أن تضع الكائن في الموضع المناسب. كان كل شيء على ما يرام عندما أستخدمه بالتزامن مع فئة محددة ، ولكن عندما حاولت أن تجعله عالميًا ووسيطة إدراج الطريقة ، فقد ظهرت بعض المشكلة. عندما أرغب في إدخال كائن في الوضع الصحيح ، يجب أن أستخدم طريقة المقارنة ، ولكن لا توجد طريقة في فئة الكائن! المشكلة هي كيفية مقارنة عنصرين كائن دون أن يعرفوا عن أنواعهما الحقيقية. ربما يجب أن أستخدم نوع الفئة العامة؟ ولكن ماذا عن المقارنة؟ أو ربما تتحد مع فئة العناصر والمكان المقارنة هناك؟ أفترض أنه ممكن. قون
public void insert(Object o)
{
Element el = new Element(o);
// initializing and setting iterators
while(!it.isDone() && ((it.current().getValue())).CompareTo(o)<0)
// it.current() returns Element of List
{
//move interators
}
//...
}
المحلول
لديك خياران:
- اجعل فئة كل كائن تنفيذ
java.lang.Comparable
واكتب منطق المقارنة لكل فصل هناك ، ثم اقبل فقطComparable
بدلاً منObject
و اتصلcompareTo()
- إنشاء
comparator
خاصية قائمتك وتعيينها على البناء. المقارنة الملموسة (تنفيذjava.util.Comparator
) يجب أن تعرف كيفية مقارنة الكائنات التي يتم وضعها في هذه الحالة بالذات من قائمتك.
لا تنتمي إلى StackOverflow