gpt4 book ai didi

java - 了解 Java 迭代器

转载 作者:行者123 更新时间:2023-12-02 07:44:24 30 4
gpt4 key购买 nike

如果我运行以下代码,它将打印出 3 次重复内容,但是当我删除 while 循环内的 if 语句时(只是为了看看它将迭代多少次),它会启动一个无限循环。

这个 hasNext() 方法实际上是如何工作的?我认为这只会迭代 5 次,因为列表中有 5 个项目。

    public class ExerciseOne {
public static void main(String []args){
String []colors = {"MAGENTA","RED","WHITE","BLUE","CYAN"};
List<String> list = new ArrayList<String>();
for(String color : colors)
list.add(color);
String[] removeColors = {"RED","WHITE","BLUE"};
List<String> removeList = new ArrayList<String>();
for(String color : removeColors)
removeList.add(color);

removeColors(list,removeList);
System.out.printf("%n%nArrayList after calling removeColors:%n");
for(String color : list)
{
System.out.printf("%s ",color);
}
}

private static void removeColors(Collection<String> collection1, Collection<String> collection2)
{
Iterator<String> iterator = collection1.iterator();

while(iterator.hasNext()){
if(collection2.contains(iterator.next()))
System.out.println("duplicate");
}
}

}

最佳答案

其实很简单

while(iterator.hasNext()){
if(collection2.contains(iterator.next()))
System.out.println("duplicate");
}

假设迭代器是指向列表元素的指针。

当您调用 next() 时,您将该指针向前移动了一步。

如果您不移动指针,hasNext() 将始终为 true,因为您仍位于列表的开头。

因此,您必须调用迭代器的 next() 直到列表中没有任何剩余元素。

关于java - 了解 Java 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775888/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com