Java:如何比较通用类中的不同类型

时间:2019-02-20 01:32:57

标签: java stack comparator comparable

和我在一起,我是编程新手。我有一个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)”

1 个答案:

答案 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));
        }
    }
}