gpt4 book ai didi

java - 如何定义通用的可比较数组类?

转载 作者:行者123 更新时间:2023-12-01 21:11:29 24 4
gpt4 key购买 nike

我想定义一个泛型类ComparableList<>,它扩展ArrayList并实现Comparable接口(interface),这样可以使用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;
}

}

我收到了这样的错误消息:

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

我认为它应该是一个 ComparableList 而不是一个对象。谁能告诉我原因吗?

最佳答案

您需要使用 Comparable.comapreTo() 来比较对象(这就是为什么你有 <T extends Comparable<T> )。您需要首先检查两侧是否为空。

此外,每次调用Iterator.next()迭代到下一个元素,您不想在一次循环迭代中调用它两次 - 在循环开始时存储项目,然后使用存储的值。

关于java - 如何定义通用的可比较数组类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41073572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com