Java 如何定义泛型可比较数组类?

Java 如何定义泛型可比较数组类?,java,generics,Java,Generics,我想定义一个泛型类ComparableList,它扩展ArrayList并实现Comparable接口,这样可以使用compareTo方法比较ComparableList类型的两个对象。compareTo应执行词典比较。 这是我的密码: class ComparableList <T extends Comparable<T>> extends ArrayList implements Comparable<ComparableList>{ @Override

我想定义一个泛型类ComparableList,它扩展ArrayList并实现Comparable接口,这样可以使用compareTo方法比较ComparableList类型的两个对象。compareTo应执行词典比较。 这是我的密码:

class ComparableList <T extends Comparable<T>> extends ArrayList implements Comparable<ComparableList>{
@Override
    public int compareTo(ComparableList o){
        Iterator citer = this.iterator();
        Iterator oiter = o.iterator();
        while (citer.hasNext() && oiter.hasNext()){
            if (citer.next() > oiter.next()){
                return 1;
            }else if (citer.next() < oiter.next()){
                return -1;
            }else {
                if (!citer.hasNext()){
                    return -1;
                }
                if(!oiter.hasNext()){
                    return 1;
                }
            }
        }
        return 0;
}
class CompariableList扩展了ArrayList实现了Compariable{
@凌驾
公共国际比较表(可比表o){
迭代器citer=this.Iterator();
迭代器oiter=o.Iterator();
while(citer.hasNext()&&oiter.hasNext()){
if(citer.next()>oiter.next()){
返回1;
}else if(citer.next()
}

我收到了如下错误消息:

TCL.java:11: error: bad operand types for binary operator '>'
            if (citer.next() > oiter.next()){
                             ^
first type:  Object
second type: Object
TCL.java:13: error: bad operand types for binary operator '<'
            }else if (citer.next() < oiter.next()){
                                   ^
first type:  Object 
second type: Object
TCL.java:11:错误:二进制运算符'>'的操作数类型错误
if(citer.next()>oiter.next()){
^
第一类:对象
第二类:对象

TCL.java:13:错误:二进制运算符“的操作数类型不正确。您需要使用
Comparable.comapreTo()
比较对象(这就是为什么
您需要使用
Comparable.comapreTo()比较对象的原因。
(这就是为什么
不会覆盖
不会覆盖
,并且
您的
可比列表中的每个元素都属于
t extensed Comparable
类型,确保二进制运算符不可用。)(Java没有运算符重载),但由于它扩展了
Comparable
,因此您有
compareTo
来替代。请改用它。

您的
ComparableList
中的每个元素都属于
t extensed Comparable
类型,确保二进制运算符不可用(Java没有运算符重载),但由于它扩展了
Comparable
,因此您可以使用
compareTo
替换。请改用它。

我将代码修改为
迭代器I=iter.next(),o=oiter.next()
但是编译器说,
对象不能转换为迭代器
似乎它仍然不是一个可比较的列表类型。为什么你希望
iter.next()
返回一个
迭代器
?它返回下一个项目,即类型为
T
。我将代码修改为
迭代器I=iter.next(),o=oiter.next();
但是编译器说
对象不能转换为迭代器
似乎它仍然不是一个可比较的列表类型为什么你希望
iter.next()
返回一个
迭代器
?它返回下一个项目-其中一个项目的类型为
T
。我修改了代码,但得到了
方法compareTo(对象)
错误。似乎它仍然是一个对象,而不是我想要的可比列表类型我修改了我的代码,但获取
方法比较到(对象)
错误。似乎它仍然是一个对象,而不是我想要的可比列表类型
int result = citer.next().compareTo(oiter.next());
if (result != 0) {
    return result;
} else {
    if (citer.hasNext()) {
        return -1;
    }
    if (oiter.hasNext()) {
        return 1;
    }
}