我必须创建一个合并方法来将两个列表(基于数组的列表)合并在一起。我的方法有效,但现在我必须将方法更改为泛型。这是我没有泛型的方法,并且它有效。但我在将其转换为泛型时遇到了麻烦。
public OrderedArrayList merge(OrderedArrayList list2){
OrderedArrayList result = new OrderedArrayList(length + list2.length);
int list1Index = 0;
int list2Index = 0;
for (int i = 0; i < result.maxSize; i++) {
if (list1Index == list.length) {
result.insert(list2.list[list2Index]);
list2Index++;
} else if (list2Index == list2.length) {
result.insert(list[list1Index]);
list1Index++;
} else if (list[list1Index] < list2.list[list2Index]) {
result.insert(list[list1Index]);
list1Index++;
} else {
result.insert(list2.list[list2Index]);
list2Index++;
}
}
return result;
}
这是我将上述消息转换为泛型的尝试。
public <T extends Comparable<T> > OrderedArrayList1<T> merge(OrderedArrayList1<T> list2){
OrderedArrayList1 result = new OrderedArrayList1(length + list2.length);
int list1Index = 0;
int list2Index = 0;
for (int i = 0; i < result.maxSize; i++) {
T temp = list[list1Index];
T temp1 = list[list2Index];
if (temp.compareTo(temp1) == 0) {
result.insert(list2.list[list2Index]);
list2Index++;
} else if (temp1.compareTo(temp)==0) {
result.insert(list[list1Index]);
list1Index++;
} else if (temp.compareTo(temp1) < 0) {
result.insert(list[list1Index]);
list1Index++;
} else {
result.insert(list2.list[list2Index]);
list2Index++;
}
}
return result;
}
有很多错误,并且不符合或不工作。这是我不断收到的错误之一:
错误:不兼容的类型:T 无法转换为 T
谢谢。
假设您已声明<T extends Comparable<T> >
在类级别,在方法上将其删除:
class OrderedArrayList1<T extends Comparable<T> > {
public OrderedArrayList1<T> merge(OrderedArrayList1<T> list2) {
...
}
}
否则,您将定义一个不同的类型变量,该变量恰好具有相同的名称,因此会出现稍微神秘的“T 无法转换为 T”消息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)