【问题标题】:How to CompareTo two Object without known about their real type如何在不知道其真实类型的情况下比较两个对象
【发布时间】:2010-03-21 19:55:54
【问题描述】:

我必须实现一个单链表,但它应该将对象放在适当的位置。 当我将它与特定类一起使用时一切都很好,但是当我尝试使其通用并且方法插入的参数是对象时出现了一些问题。 当我想在正确的位置输入 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
   }
//...
}

【问题讨论】:

    标签: java linked-list compareto


    【解决方案1】:

    你有两个选择:

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

    【讨论】:

    • 好答案。我建议通过 class LinkedList> { public void insert(T t) { ... } public T get(...) { ... } 使其通用。
    猜你喜欢
    • 1970-01-01
    • 2013-03-05
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 2017-07-28
    相关资源
    最近更新 更多