gpt4 book ai didi

java - 使用 Java Vector 类检查空元素

转载 作者:行者123 更新时间:2023-12-01 15:13:06 24 4
gpt4 key购买 nike

我正在构建一个堆数据结构,但让我抓狂的部分是检查空子值。

我正在使用 Vector,并且将父级与子级进行比较,但如果只有一个子级,则程序会崩溃,因为类似

vectorObject.get(i) //i'th element doesn't exist 

将返回异常。

我无法使用类似的内容检查 null 元素

if (vectorObject.get(i) == null)

由于运行 get() 方法会自动中断程序,因此如何在不进行一些不可读的怪异黑客攻击的情况下实际检查不存在的元素?

最佳答案

你看起来很困惑。我认为您需要重新阅读用于设计堆数据结构的任何引用资料(或阅读 the relevant section of the Wikipedia article )。

如果您的家长的电话是 0那么您的 child 在2*(0)+1=12*(0)+2=2 。在这种情况下,1 < vectorObject.size()是真的,但是 2 < vectorObject.size()为 false,表示有左 child 但没有右 child 。

Vector (或 ArrayList 如果您已按照我的建议进行切换)是从零开始的,您需要检查 i < vectorObject.size() 是否,不是i <= vectorObject.size() 。如果i < vectorObject.size()然后i是一个合法的索引。

更新:

这里有两种方法可以构建逻辑。如果您必须以与二胎案例完全不同的方式处理独生子女案例,那么这可能是最好的选择:

int size = vectorObject.size();
if (2*i+2 < size) { /* Two-child case */ }
else if (2*i+1 < size) { /* One-child case */ }
else { /* No children case */ }

如果单独处理两个节点,那么嵌套可能会更好:

int size = vectorObject.size();
if (2*i+1 < size) {
// Handle left child
if (2*i+2 < size) {
// Handle right child
}
else {
// No right child
}
}
else { /* No children */ }

关于java - 使用 Java Vector 类检查空元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12031967/

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