我正在尝试编写一个方法来确定ArrayList是否按升序排列。 ArrayList类型可以是Integer,String等。作为一名Java初学者,我花了最后几个小时来了解仿制药,可比较等等。这就是我到目前为止所做的:
static boolean isOrdered(ArrayList<? extends Comparable<?>> a) {
for(int i=0; i < a.size()-1; i++) {
if (a.get(i).compareTo(a.get(i+1)) > 0) return false;
}
return true;
}
我收到以下编译错误:
Comparable类型中的compareTo(捕获#11-of?)方法不适用于参数(捕获#12-of?extends Comparable
从我从阅读中收集到的this我明白这是因为它不确定是否可以进行比较。但是我仍然不确定如何纠正这个问题。
我还是Java的新手(来自Python)。非常感谢任何建议/见解。谢谢!
答案 0 :(得分:4)
这里的问题是仿制药。解决这个问题的方法是告诉编译器所有元素都属于同一类型,称为T
:
static <T extends Comparable<T>> boolean isOrdered(ArrayList<T> list)
...
}
这意味着整个列表包含某些类型T
的所有元素,这些元素支持将值与其他T
值进行比较。