java - 使用 Iterator 对 ArrayList 进行迭代,其中 while 条件搜索 .contains() 并失败
问题描述
这不应该是火箭科学,但由于某种原因,我的 while 条件保持错误。ArrayList
我创建了一个我填充的空 。但是,当我对其进行迭代时,它似乎失败了。我错过了什么?
ArrayList<String> names = new ArrayList<>();
for(int i = 0; i < 10; i++) {
names.add("Name " + i);
}
Iterator<String> it = names.iterator();
while(it.hasNext() && it.next().contains("Name 5")) {
System.out.println("Found my desired name.");
}
在 Netbeans 中按原样执行附加的代码。
解决方案
您的问题的正确代码段是
List<String> names = new ArrayList<>();
for (int i = 0; i < 10; i++) {
names.add("Name " + i);
}
Iterator<String> it = names.iterator();
while (it.hasNext()) {
String item = it.next();
if (item.contains("Name 5")) {
System.out.println("Found my desired name.");
break;//remove if you don't want to exit
}
}
您的代码的问题是 while 循环。
while(it.hasNext() && it.next().contains("Name 5")) {
这基本上意味着当迭代器有一个值并且下一个值(在这种情况下将是第一个元素)包含名称 5 时,继续运行。这样做的问题是,第一项将是“名称 0”而不是“名称 5”。“名称 0”不包含名称 5。
所以发生的情况是while循环运行的条件为假,循环不会运行。
推荐阅读
- html - 正则表达式将 target="_blank" 添加到所有链接,但排除已经具有 target="_blank" 的链接或具有和的链接
- javascript - 使用 `jest.useFakeTimers()` 时,为什么 `setImmediate` 不会无限期超时?
- dictionary - 将字母与其值相关联并在python中对输出进行排序
- jquery - HTML,jQuery - 更新表单后打印值 - 输入数组
- java - 无法安装 java sdk,webupd8team repo 给出 sha256 错误,并且来自 oracle 的 tar.gz 在 Ubuntu 18.04 上给出了损坏的输出
- batch-file - 如何编写搜索文件名并将它们复制到文件夹的批处理脚本
- javascript - AngularFireStorage 上传多张图片?
- python-3.x - 查询在 Python 中
- spring-boot - 构建条件 JPQL 语句
- unity3d - Unity:Animator无法预览过渡