Tan*_*ano 2 java iteration loops
如果我运行以下代码,它将打印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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
实际上它非常简单
while(iterator.hasNext()){
if(collection2.contains(iterator.next()))
System.out.println("duplicate");
}
Run Code Online (Sandbox Code Playgroud)
想象一下,迭代器是指向列表元素的指针.
当你打电话时next(),你将这个指针向前移动一步.
如果您不移动指针,hasNext()将始终为true,因为您仍然在列表的开头.
因此,您必须调用迭代器,next()直到列表中没有任何剩余元素.
| 归档时间: |
|
| 查看次数: |
4572 次 |
| 最近记录: |