import java.util.*;
public class IteratorDemo {
public static void main(String args[]) {
// Create an array list
ArrayList al = new ArrayList();
// add elements to the array list
al.add("C");
al.add("A");
al.add("E");
al.add("B");
al.add("D");
al.add("F");
// Use iterator to display contents of al
System.out.print("Original contents of al: ");
Iterator itr = al.iterator();
while(itr.hasNext()) {
Object element = itr.next();
System.out.print(element + " ");
}
System.out.println();
}
}
我不明白。如果al.iterator()
返回 的第一个元素al
,为什么如果我把itr.next()
(应该是我猜的第二个)放入element
然后打印element
它会打印第一个元素而不是第二个元素?
我是 Java 新手。与 c/c++ 并行,Iterator 是不是像一个指针,而 Iterator.next() 是不是像解引用的指针?当我执行代码中的内容时,有人可以向我解释在低级别实际发生了什么吗?
调用iterator()
返回列表中元素的迭代器,而不是第一个元素。事实上,如果这返回了第一个元素,那么条件就while(itr.hasNext())
没有任何意义。
只有当您调用时next()
,才会返回迭代中的下一个元素。
因此,如果您想排除第一个元素,则需要执行以下操作:
if(itr.hasNext()) itr.next();
在循环之前。
另外,顺便说一句,我建议您使用参数化类型而不是原始类型,即您ArrayList
应该声明ArrayList<String> al = new ArrayList<>();
并且您的迭代器为Iterator<String> itr = al.iterator();
.
鉴于在这种情况下您要做的就是将元素打印到控制台,因此根本不需要使用迭代器,因为这样做更简单:
al.forEach(element -> System.out.print(element + " "));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句