和我在一起,我是编程新手。我有一个MinStack类,它具有几种不同的类型。我了解可比接口用于比较相同类型的实例。我是否需要为每种可能传递到我的数据结构的类型编写一个单独的compareTo()方法?如果不是,compareTo方法将是什么样?任何帮助将不胜感激。
public class MinStack<T> implements Comparable<T> {
private ArrayList<T> a = new ArrayList<>();
private ArrayList<T> min = new ArrayList<T>();
@Override
public int compareTo(T o) {
return this.compareTo(o);
}
public void push(T x) {
if (a.isEmpty()) {
a.add(x);
min.add(x);
} else if (!a.isEmpty()) {
a.add(x);
int r = x.compareTo(min.get(min.size()-1));
}
}
-运行此命令时,出现错误消息“无法解析方法compareTo(T)”
答案 0 :(得分:0)
我认为您需要的是MinStack
中的元素是可比较的,而不是堆栈本身。为此,您需要在参数类型上将Comparable
设置为type bound。下面的代码重写可以正常编译,并且应该执行您想要的操作:
public class MinStack<T extends Comparable<T>> {
private ArrayList<T> a = new ArrayList<>();
private ArrayList<T> min = new ArrayList<T>();
public void push(T x) {
if (a.isEmpty()) {
a.add(x);
min.add(x);
} else if (!a.isEmpty()) {
a.add(x);
int r = x.compareTo(min.get(min.size()-1));
}
}
}