java集合--Iterator接口

栏目: Java · 发布时间: 5年前

内容简介:上一篇文章中我在集合元素的遍历中已经有涉及到Iterator的普遍使用方法,但是并没有对此进行解释。其实,Iterator来源于java.util包,也是属于Java集合框架中的一份子,不同于Collection(存放单一数据)和Map(存放具有映射关系的数据),Iterator主要用于集合元素的迭代输出,所以它的对象又被称为迭代器。Iterator的方法包括:

上一篇文章中我在集合元素的遍历中已经有涉及到Iterator的普遍使用方法,但是并没有对此进行解释。

其实,Iterator来源于java.util包,也是属于 Java 集合框架中的一份子,不同于Collection(存放单一数据)和Map(存放具有映射关系的数据),Iterator主要用于集合元素的迭代输出,所以它的对象又被称为迭代器。

Iterator的方法包括:

表头 表头
boolean hasNext(); 判断迭代器是否还有未遍历的元素
E next(); 返回迭代器中下一未遍历元素
void remove(); 移除迭代器上一遍历的元素
void forEachRemaining(Consumer action) 以特定的Lambda表达式遍历元素

注:void forEachRemaining(Consumer action)为Java 8新增的默认方法。

下面是Iterator的实例化以及各方法的使用方法

  • Iterator的实例化
Iterator it=c5.iterator();

Iterator本身不存在容纳对象的能力,它的对象必须依附于Collection对象。

同时,一个Iterator对象只能使用一次,复用会导致 java.util.ConcurrentModificationException 。我还没搞懂为什么会这样,应该是关于 设计模式 的内容。

  • boolean hasNext();以及next();
while(it.hasNext()) {
    System.out.println(it.next());
}
输出:5
  • void remove();
while(it.hasNext()) {
    System.out.println(it.next());
    it.remove();
}
输出:5

remove方法要在next方法之后调用,次序调换会导致 java.lang.IllegalStateException

  • void forEachRemaining(Consumer action);
Iterator it=c5.iterator();
it.forEachRemaining(obj->System.out.println(obj));
输出:5

通过特定的Lambda表达式格式输出元素。

Iterator接口就写到这里了。通常我都是用它作为测试Collection对象的,好处就是不用通过循环遍历,代码量会少一点。但是正式使用我还是会使用循环遍历Collection对象,虽则代码量多,但是可以省掉一个对象的内存空间,能省一点是一点,哈哈!

如果你还想了解关于java集合的内容,欢迎点击 https://segmentfault.com/a/1190000019071471


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C++Templates中文版

C++Templates中文版

David Vandevoorde、Nicolai M.Josuttis / 陈伟柱 / 人民邮电出版社 / 2008-2 / 69.00元

本书是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例3方面的有用资料,为读者打下C++模板知识的坚实基础。 全书共22章。第1章全面介绍了本书的内容结构和相关情况。第1部分(第2~7章)以教程的风格介绍了模板的基本概念,第2部分(第8~13章)阐述了模板的语言细节,第3部分(第14~18章)介绍了C++模板所支持的基本设计技术,第4部分(第19~22章)深入探讨了各种使用模板......一起来看看 《C++Templates中文版》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码