java - 列表大小具有意想不到的值(value)

标签 java list indexoutofboundsexception

假设循环中存在以下情况:

LinkedList<String> myList = someMethodReturnsList();
int start = 0, end = 0;

while (end < myList.size() && someOtherCondition)
    ++end;

List<String> subList = myList.sublist(start, end);

... (do stuff and possibly alter list)

start = end;

我遇到的情况是仅有时,会调用 sublist会抛出 IndexOutOfBoundsException 。鉴于我对 end < myList.size() 的第一次测试,这让我很困扰,所以我写了一些调试代码。我的调试代码告诉我介于 while 之间循环并调用sublist ,我的end值最终为 34 而 myList.size()返回 33。

这怎么可能?我的程序中没有其他线程可以在此列表上操作,那么我的循环检查是如何通过并递增 end 的?到 34?

编辑:这始终发生在我的代码执行中的特定点,因此这不是一个侥幸错误,但它不会发生在该函数的每个输入中,这使得这变得更加奇怪。

最佳答案

你所描述的情况是不可能的。

实际上,实现这种情况的唯一方法是您自己的调试:有一些 IDE 功能,例如代码元素检查,可以在应用程序在断点处暂停时执行部分代码。

您必须使用调试器工具更改 end 的值。

关于java - 列表大小具有意想不到的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35855615/

相关文章:

java - 在 TestLuck(概率)程序中计算平均值

c# - OrderBy().ThenBy() 错误输出

python - 从这个列表中获取 playAudio 调用的参数的优雅方法是什么

java - 如何删除 java.lang.IndexOutOfBoundsException?

java - 复制粘贴时扫描仪出现问题,但原始程序可以运行

java - "c:choose"标签 : "' 内的非法文本

Java:Jackson 缩进添加了新的 map 标签

java - 在Java中将两个字符串 append 到数组中的一个索引

java - 如何避免在解析 CSV 行中的空位置时触发 ArrayIndexOutOfBoundsException?

java - 为什么我在索引 = -2147483648 (= Integer.MIN_VALUE) 处收到 IndexOutOfBoundsException?