gpt4 book ai didi

Java 泛型、不可转换类型、类型转换、堆 d-ary

转载 作者:行者123 更新时间:2023-11-30 09:46:14 24 4
gpt4 key购买 nike

这是我对 d 元堆的删除方法。编译时出现很多“不可转换类型”错误。另请注意,我的程序扩展了 Comparable。

public class HeapImpl12<T extends Comparable<? super T>> implements Heap12<T>

我知道我的数组不是类型对象而是类型 T。

T[] _nodeArray = (T[]) new Comparable[DEFAULT_ARRAYSIZE]; 

问题:我明白一切都应该是类型 T,但是当我写代码时,我遇到了很多“无法将类型 T 转换为类型 INT”的错误,所以我决定进行类型转换以使其成为同一类型( T)或(整数)。我现在意识到这样做是错误的,因为我得到了“不可转换类型”错误。请对 Java 泛型有深入了解的人告诉我保持所有类型 T 的技术和技巧。

public void remove(T o) {
for(int i = 0; i < _nodeArray.length; i++){
if(_nodeArray[i].equals(o)){
_nodeArray[i] = _nodeArray[_numNodes - 1];
if((Integer)_nodeArray[i] > parentIdx(i)){
bubbleUp((Integer)_nodeArray[i]);
}
else{
trickleDown((Integer)_nodeArray[i]);
}

}
else{
throw new NoSuchElementException();
}


_numNodes--;
}

}

错误:当我类型转换(整数)时发生。如果您愿意,我可以发布我所有的代码,但我认为这就足够了。

最佳答案

您真的不需要做太多——它实际上是正确的。只需取出显式转换并使用 compareTo到位 > :

public void remove(T o) {
for(int i = 0; i < _nodeArray.length; i++){
if(_nodeArray[i].equals(o)){
_nodeArray[i] = _nodeArray[_numNodes - 1];
if(_nodeArray[i].compareTo(parentIdx(i)) > 0){
bubbleUp(_nodeArray[i]);
}
else{
trickleDown(_nodeArray[i]);
}

}
else{
throw new NoSuchElementException();
}


_numNodes--;
}
}

关于Java 泛型、不可转换类型、类型转换、堆 d-ary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7236765/

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