首页 > 解决方案 > 使用 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 中按原样执行附加的代码。

标签: javaiterator

解决方案


您的问题的正确代码段是

        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循环运行的条件为假,循环不会运行。


推荐阅读