如何解决使用Iterator遍历ArrayList,而条件搜索.contains并失败
这不应该是火箭弹,但由于某种原因,我的条件保持为假。我创建一个空的from packaging import version
jar_files = ['testapplication-1.0.jar','testapplication-1.1.jar','testapplication-2.0.jar']
versions = [jar_file.rpartition('.')[0].split('-')[1] for jar_file in jar_files]
_version = versions[0]
for ver in versions[1:]:
if version.parse(ver) > version.parse(_version):
_version = ver
print(f'testapplication-{_version}.jar')
,我将其填充。但是,当我遍历它时,它似乎失败了。我想念什么?
ArrayList
在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循环运行的条件将为false,并且循环将不会运行。
,对于第一次迭代,it.next()
返回列表的第一个元素Name 0
,因此它永远不会进入while
循环。
您应该这样修改代码:
Iterator<String> it = names.iterator();
while(it.hasNext()) {
if (it.next().contains("Name 5")) {
System.out.println("Found my desired name.");
break; // exit while loop
}
}
,
while
循环将循环直到您的条件不成立为止。
在您的示例中,它是true && false
-将停止循环
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。