如果列表只有一个元素,那就更清楚了,让我们说“b”. hasNext()实际上会返回true,而next()会读取它,迭代将在此之后结束.

说明:

如果你打电话给Iterator< Object>任何非空列表上的it = list.iterator()(即使它只有一个元素),调用hasNext()时也是如此.那是因为迭代器在第一个元素之前被初始化:

b u n g i o r n o

^

i - iterator

当你调用next()时它会做两件事:

>它读取迭代器前面的元素,

>在刚刚读取的元素之后和下一个元素之前移动迭代器.

在你的例子中 – 它打印“b”并在“u”之前停止:

b u n g i o r n o

^

i

就在结束之前:

b u n g i o r n o

^

i

它实际上有下一个值 – “o”.调用next()将读取该值并在o之后跳转.没有更多的元素. hasNext()将显示false,调用next()将导致异常.

技术细节:

如何实现迭代器的基本思想是:

– 当通过调用List上的iterator()创建Iterator时,其名为next的内部变量指向列表的第一个元素.

– hasNext()只检查下一个是否是!= null.

– next()返回next并设置next以显示下一个元素.

这是java.util.ArrayList Iterator(省略了一些细节):

public Iterator iterator() {

return new Itr();

}

private class Itr implements Iterator {

int cursor; // index of next element to return

int lastRet = -1; // index of last element returned; -1 if no such

int expectedModCount = modCount;

public boolean hasNext() {

return cursor != size;

}

public E next() {

checkForComodification();

int i = cursor;

Object[] elementData = ArrayList.this.elementData;

cursor = i + 1;

return (E) elementData[lastRet = i];

}

}

java hasnextstring_Java – ListIterator和hasNext相关推荐

  1. Java迭代器ListIterator

    ListIterator Iterator的子类,增加了一些特有的方法 用于遍历集合中的元素 可以正向迭代.反向迭代 正向迭代,从第一个元素,到最后一个元素 反向迭代,从最后一个元素,到第一个元素 I ...

  2. JAVA中ListIterator和Iterator详解与辨析

    在使用java集合的时候,都需要使用Iterator.但是java集合中还有一个迭代器ListIterator, 在使用List.ArrayList.LinkedList和Vector的时候可以使用. ...

  3. JDK源码解析之java.util.ListIterator

    ListIterator是一个功能更加强大的迭代器接口, 它继承于Iterator接口,只能用于各种List类型的访问.可以通过调用listIterator()方法产生一个指向List开始处的List ...

  4. 【Java】while(scanner.hasNext()){}引发“死循环”的处理方法

    第100篇原创博客啦,先撒个花儿~~~ 因为个人原因,不太喜欢C语言,反而喜欢用Java做网上LeetCode.洛谷等平台上简单的OJ. 每次遇到题目中出现读取任意(有上限)多个信息的时候我就很犯愁, ...

  5. java hasnext_Java扫描仪的hasNext()方法与示例

    java hasnext 扫描器类的hasNext()方法 (Scanner Class hasNext() method) Syntax: 句法: public boolean hasNext(); ...

  6. java中scanner关于hasnext等的问题

    初学java,在听课时跟着老师敲代码,学到了scanner,希望用hasNext等方法,判断在键盘上输入的数据,我照着代码敲但是在中间报错,如下图 因为不了解,我就试着根据上面的提示,按住Alt+Sh ...

  7. java.util.ListIterator

    列表迭代器并不持有当前元素的引用,其持有的游标是位于列表连个元素之间.可以通过调用next()或者previous()返回列表中的元素.一个拥有n个元素的列表拥有n+1个游标位置,示意图如下: 注意: ...

  8. [Java基础]ListIterator

    ListIterator:

  9. Java 集合系列(四)—— ListIterator 源码分析

    以脑图的形式来展示Java集合知识,让零碎知识点形成体系 Iterator 对比   Iterator(迭代器)是一种设计模式,是一个对象,用于遍历集合中的所有元素.   Iterator 包含四个方 ...

最新文章

  1. 史上最简单的人脸识别项目登上GitHub趋势榜
  2. linux-进程的替换exec函数族
  3. 禁用人脸识别四个月后,旧金山人证明了他们的先见之明
  4. matlab参数识别,教程:matlab参数识别(包括微分方程和simulink)
  5. 修改了系统时间后,myeclipse 和tomcat下的代码不同步了
  6. maven setting.xml 中文配置详解(全配置)
  7. Ios9 html5,ios9,html5_ios9下在浏览器中通过scheme打开app的问题,ios9,html5 - phpStudy
  8. delphi中richedit中光标如何定位到最后_嵌入式开发之Linux系统中Vi编辑器的使用
  9. 8能达到go速度吗 php_相同逻辑的php与golang代码效率对比,最好语言落谁家…
  10. pbr发光 unity_PBR的基础理论
  11. 聚焦BCS|专家共议“内生安全框架”如何护航新基建
  12. java转型 内存_java 对象转型内存分析
  13. 力扣-58 最后一个单词的长度
  14. 解析OA系统易用性的价值和意义
  15. java代码编写九九乘法表
  16. 千方百剂创建账套服务器文件,千方百剂辅助工具使用手册图解
  17. 学习笔记--爬虫(11)---js逆向思路和解密思路(初级)
  18. DataStreamer Exception
  19. 安装Microsoft Office - Win系统
  20. ubuntu桌面美化mac_教程:为你的linux桌面带来Mac OS Mojave的体验

热门文章

  1. python的类属性和方法_Python中类属性、实例属性和实例方法的区别
  2. 平面设计中的网格系统pdf_全面掌握版式设计中的网格系统
  3. Microbiome:浙大马忠华团队-生防细菌抑制病原真菌新机制
  4. PCE:南农张瑞福组揭示微生物肥料菌种芽孢杆菌应对植物免疫防卫实现根际定殖的新策略...
  5. 蚂蚁森林合种计划(2020.12.12,7天有效,每周6更新)
  6. QIIME 2教程. 28社区Community(2020.11)
  7. 斯坦福大学统计系教授带你玩转微生物组分析
  8. 宏基因组实战7. bwa序列比对, samtools查看, bedtools丰度统计
  9. seaborn箱图(box plot)可视化、并且在箱图中使用三角形标注均值的位置(showmeans=True)
  10. R语言将dataframe数据从宽表(wide)变为长表(long)实战:tidyr包的gather函数、cdata包的unpivot_to_blocks函数、data.table使用melt函数