1

如果 ListNode o1.value > ListNode o2.value,我如何比较两个 ListNode 值以返回 1,如果相等则返回 0,如果小于则返回 -1。

我现在有这个比较器,但是有一个错误说没有实现抽象方法。此外,我不确定他们是否会正确比较以下示例中的值。

添加'd'。添加'b'。添加'e'

b->d->e

private Comparator<? super E> priorityComparator = new Comparator<E>(){ 
  public int compare(ListNode<E> o1, ListNode<E> o2) {
     String i1 = o1.value.toString();
     String i2 = o2.value.toString();
        return i1.compareTo(i2);
    }};

如何正确实现此比较器,以便它获取两个 ListNode 对象并返回它们之间的 int 值比较?

4

1 回答 1

4

您目前尚未实施Comparator<E>.compare- 您已实施Comparator<ListNode<E>>.compare. 您要么需要更改变量的类型,要么需要更改方法的参数。如果你真的想做一些比较节点的东西,那么你想要Comparator<ListNode<E>>.

另请注意,您的比较仅适用于toString()以与其自然顺序兼容的方式覆盖的类型。例如,它不适用于ListNode<Integer>,因为它会声称 10 的值小于 2 的值......

于 2012-10-24T17:46:44.580 回答