如何比较E元素

How to compare E elements

所以我想做的是比较列表的节点。网上很多相关问题对此提供了答案,大部分都是实现可比较的接口。

//This is a nested class
private static class Node<E> implements Comparable<Node<E>> {
    private E element;

    ......
    ......

    public int compareTo(Node<E> o) {
       return element >= o.element ? 1 : 0;
    }
}

问题在于它会引发编译器错误 bad operand types for binary '>=' first type: E; second type: E。我什至不能使用这样的东西:return element.compareTo(o.element); 因为 compareTo 没有定义。

我该怎么做才能解决这个问题?网络上针对此类问题的大多数解决方案对我都不起作用......请帮忙。谢谢....

您需要将其声明为class Node<E extends Comparable<E>>,以便E拥有自己的compareTo方法:

private static class Node<E extends Comparable<E>> implements Comparable<Node<E>> {
    private E element;

    public int compareTo(Node<E> o) {
       return element.compareTo(o.element);
    }
}