كيفية مقارنة كائنين دون معرفة عن نوعهما الحقيقي

StackOverflow https://stackoverflow.com/questions/2486937

  •  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) يجب أن تعرف كيفية مقارنة الكائنات التي يتم وضعها في هذه الحالة بالذات من قائمتك.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top