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

Kam*_*mil 0 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
   }
//...
}
Run Code Online (Sandbox Code Playgroud)

Boz*_*zho 5

您有两种选择:

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

  • 好答案.我建议通过类LinkedList <T extends Comparable <T >> {public void insert(T t){...} public T get(...){...}使它成为通用的. (2认同)