gpt4 book ai didi

java - Java 中的泛型,Merge 方法

转载 作者:行者123 更新时间:2023-11-29 02:58:40 25 4
gpt4 key购买 nike

我必须创建一个合并方法来合并两个列表(基于数组的列表)。我的方法有效,但现在我必须将我的方法更改为泛型。这是我没有泛型的方法,它有效。但是我很难将它转换为泛型。

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”消息。

关于java - Java 中的泛型,Merge 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36603411/

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