作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设循环中存在以下情况:
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/
我是一名优秀的程序员,十分优秀!