如何比较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);
}
}
所以我想做的是比较列表的节点。网上很多相关问题对此提供了答案,大部分都是实现可比较的接口。
//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);
}
}