如何比较两个对象而不知道它们的真实类型

时间:2010-03-21 11:52:23

标签: java linked-list compareto

我必须实现一个链接列表,但它应该将对象放在适当的位置。 当我将它与特定类一起使用时,一切都很好,但是当我尝试使它成为通用的并且方法插入的参数是对象时出现了一些问题。 当我想在正确的位置输入Object时我应该使用CompareTo方法,但是Object类中没有方法! 问题是如何比较两个对象元素而不知道它们的真实类型。 也许我应该使用泛型类?那么CompareTo怎么样?或者可以与Element类结合并将CompareTo放在那里? 我想这是可行的。 :)

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
   }
//...
}

1 个答案:

答案 0 :(得分:5)

您有两种选择:

  • 制作每个对象的类实现java.lang.Comparable并为每个类编写比较逻辑,然后接受Comparable而不是Object并调用compareTo()
  • 创建列表的comparator属性并将其设置为构造。具体的比较器(java.util.Comparator的实现)应该知道如何比较放在列表的这个特定实例中的对象。