为什么这个java迭代器循环也打印第一个元素?

尼古拉·阿马迪奥
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() 是不是像解引用的指针?当我执行代码中的内容时,有人可以向我解释在低级别实际发生了什么吗?

奥斯曼 D.

调用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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么`zip`从第一个迭代器中又吃了一个元素?

为什么boost :: python迭代器会跳过第一个元素?

为什么对多个流进行迭代仅对第一个元素进行迭代?

Selenium / Python:为什么在我的for循环迭代中找到第一个元素后,为什么Selenium find_element_不再通过查找元素了?

为什么这个 list<int[]> 不保留第一个元素?

为什么for循环会更改for循环中的列表后跳过第一个元素?

为什么我的 for 循环只打印第一个结果?

为什么我的 for 循环只重复打印第一个 if 语句?

为什么打印结构变量会给出第一个元素的值?

为什么数组不打印第一个元素?

程序为什么在循环链接列表中的第一个元素之后插入节点?

为什么我的 for 循环只抓取第一个元素?

为什么我的for循环仅在第一个元素上起作用?

为什么第一个是无限循环?

为什么我需要添加双引号来打印java中char数组的第一个和最后一个元素

为什么不附加第一个元素

为什么在无服务器中响应的第一个元素为空?

为什么这个程序在我输入第一个单词时结束并且不循环

为什么打印指向char的指针的第一个元素会打印字符串的内容?

for 循环内的嵌套 while 循环仅迭代第一个元素

为什么 $('#chat_input').val(chat[i]); 只打印第一个数组元素?

While循环不是打印出第一个表单迭代而是打印出其他第一个内容?

为什么我的 jQuery show() 函数在 php foreach 循环中仅适用于第一个元素

为什么将0作为数组的第一个元素会阻止“ for”循环执行。[JavaScript]

这个div元素的第一个子节点是什么?

为什么第一个循环总是比第二个循环快?

“for”循环只打印数组的第一个元素

为什么在这个printf数组中的第一个逗号?

为什么这个非常基本的 AspNetCore 程序的输出中丢失了第一个空间