文档章节

Iterator迭代器

Bug-Killer
 Bug-Killer
发布于 2016/04/12 16:33
字数 412
阅读 45
收藏 2

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

Iterator迭代器

    所有Collection中方法都实现了Iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素的迭代。在java.util包中。

    1)Iterator定义有三个方法:

        ①boolean hasNext()方法:判断指针后边是否有元素。

        ②E next()方法:指针后移,并返回当前元素。E代表泛型,默认为Object类型。

        ③void remove()方法:在原集合删除刚刚返回的元素。

    2)对与List集合而言,可以通过基于下标的get方法进行遍历,iterator是针对Collection接口进行设计的,所以继承Collection接口的各种类,都可以使用iterator方法进行迭代遍历。

    3)迭代器的使用方式:boolean hasNext()该方法询问集合中是否还有元素可取,E next()该方法获取元素。迭代器的迭代方法是while循环量身定制。

List list = new ArrayList() ;
    list.add("a");
    list.add("b") ;
    Iterator it = list.iterator() ;
    while(it.hasNext()){
        Object obj = it.next() ;
        System.out.println(obj) ;   
    }

       4)迭代器的删除问题:在迭代器迭代过程中,我们不应该使用集合的增删操作来改变集合中元素的数量,这样会出现迭代异常,若想删除迭代出来的元素,必须使用Iterator。迭代器在使用自己的remove()方法时,可以将刚刚获取的元素删除,但是不能重复调用两次。

while(it.hasNext()){
    String element = (String)it.next() ;    //如果有就取出,next的返回值类型默认是Object,所以需要强转
    if("#".equals(element)){
        list.remove(element) ;        //不能使用集合删除,会出现迭代异常。
        it.remove("#");//删除迭代出来的元素
    }
    }

    

© 著作权归作者所有

下一篇: 增强for循环
Bug-Killer
粉丝 5
博文 76
码字总数 49654
作品 0
海淀
程序员
私信 提问
STL: std::iterator_traits.

Iterator(迭代器)是一种 "能够迭代某序列内所有元素"的对象,可通过改编自寻常pointer的一致接口来完成工作。 Iterator奉行一个纯抽象的概念: 任何东西,只要行为类似iterator,就是一种Ite...

SHIHUAMarryMe
2016/08/14
30
0
再探迭代器

除了为每个容器定义的迭代器之外,标准库在头文件iterator中还定义了额外几种迭代器,包括: 插入迭代器(insert iterator):这些迭代器被绑定到一个容器上,可用来向容器中插入元素; 插入器...

种地瓜
2016/04/01
35
0
Boolan微专业:C++第九周学习笔记

学习笔记大纲 iterator_category 迭代器的类型 容器的迭代器分类如下。 随机访问型迭代器(randomaccessiterator_tag):array、vector、deque。这种迭代器可以随意跳转。 双向迭代器(bidirect...

逗之煞
2017/12/17
0
0
Python的基础知识之迭代器

一、概念 迭代:按照一定的顺序访问集合中的每一个元素,或者叫遍历(其他语言叫做遍历); 可迭代对象(Iterable):能被迭代的对象,或者说直接作用于for循环的对象,可以通过for..in来遍历...

摸着石头过河_崖边树
2017/12/13
0
0
STL: iterator适配器(2).

自C++11来iterator越来越成为标准库中的重要一环. iterator分为(这里只是粗略的提一下,下一篇会详细介绍): Output-iterator, Input-iterator, Froward-iterator, Bidirectional-iterator, R...

SHIHUAMarryMe
2016/08/14
18
0

没有更多内容

加载失败,请刷新页面

加载更多

在C语言中“静态”是什么意思?

我已经在C代码的不同地方看到了static一词。 这就像C#中的静态函数/类(实现在对象之间共享)吗? #1楼 多文件变量作用域示例 在这里,我说明了静态如何影响多个文件中函数定义的范围。 交流...

javail
9分钟前
3
0
利用 FC + OSS 快速搭建 Serverless 实时按需图像处理服务

作者:泽尘 简介 随着具有不同屏幕尺寸和分辨率设备的爆炸式增长,开发人员经常需要提供各种尺寸的图像,从而确保良好的用户体验。目前比较常见的做法是预先为一份图像存放多份具有不同尺寸的...

阿里巴巴云原生
12分钟前
2
0
前端架构最佳实践

Folders-by-Feature Structure 胜过 Folders-by-Type Structure

lilugirl
22分钟前
3
0
Seata AT 模式启动源码分析

从上一篇文章「分布式事务中间件Seata的设计原理」讲了下 Seata AT 模式的一些设计原理,从中也知道了 AT 模式的三个角色(RM、TM、TC),接下来我会更新 Seata 源码分析系列文章。今天就来分...

后端进阶
24分钟前
4
0
Python中“自我”一词的目的是什么?

Python中self词的目的是什么? 我知道它是指从该类创建的特定对象,但是我看不到为什么要将它显式地作为参数添加到每个函数中。 为了说明这一点,在Ruby中,我可以这样做: class myClass ...

技术盛宴
25分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部