Android 迭代器 Iteraor迭代器以及foreach的使用
Iterator是一个迭代器接口,专门用来迭代各种Collection集合,包括Set集合和List集合。
Java要求各种集合都提供一个iteratot()方法,该方法返回一个Iterator用于遍历集合中的元素。至于返回的Iterator是哪一种实现类我们并不关心,这就是典型的“迭代器模式”。
使用Iterator遍历集合元素,很好的隐藏了集合的内部细节。
Iterator接口包含以下三个方法:
- boolean hasNext():如果被迭代的集合元素还没有被遍历,则返回true。
- Object next():返回集合里下一个元素
- void remove():移除集合里上一次next()返回的元素
例子:
public class IteratorTest {
public static void main(String[] args) {
Collection books = new HashSet();
books.add("计算机网络");
books.add("数字信号处理");
books.add("java语言程序设计");
//生成迭代器
Iterator it = books.iterator();
int i=;
while(it.hasNext()){
//next()返回的数据是Object型,需要强制转化
String info = (String)it.next();
//输出遍历的每一个元素
System.out.println("第"+i+"个元素:"+info);
if(info.equals("数字信号处理")){
System.out.println(i);
it.remove(); //把《数字信号处理》从集合books中移除
}
i++;
}
//输出移除后的结果
System.out.println(books);
}
}
输出结果为:
第0个元素:java语言程序设计
第1个元素:数字信号处理
1
第2个元素:计算机网络
[java语言程序设计, 计算机网络]
除了通天Iterator接口遍历集合的元素外,还可以使用以下方法遍历。这种方法显得更加简洁。
public class IteratorTest {
public static void main(String[] args) {
Collection books = new HashSet();
books.add("计算机网络");
books.add("数字信号处理");
books.add("java语言程序设计");
for(Object obj:books){
String info = (String)obj;
System.out.println(info);
if(info.equals("数字信号处理")){
//books.remove(info);不能通过迭代变量修改集合,否则引发异常
}
}
}
}
输出结果为:
java语言程序设计
数字信号处理
计算机网络
Android 迭代器 Iteraor迭代器以及foreach的使用的更多相关文章
- STL_iterator迭代器(1)——迭代器的分类
一.容器迭代器 尽管C++指针也是迭代器,但用的更多的是容器迭代器.容器迭代器用法和iterdemo.cpp一样,但和将迭代器申明为指针变量不同的是,你可以使用容器类方法来获取迭代器对象.两个典型的容 ...
- Python—day13 迭代器、迭代器对象、for循环对象、生成器、枚举对象
一.迭代器 1.迭代器概念: 器:包含了多个值的容器 迭代:循环反馈(一次从容器在取出一个值) 迭代器:从装有多个值的容器在一次取出一个值 ls=[3,5,7,1,9] 遍历:被遍历的对象必须是有序容 ...
- STL迭代器及迭代器失效问题
迭代器失效: 典型的迭代器失效. 首先对于vector而言,添加和删除操作可能使容器的部分或者全部迭代器失效.那为什么迭代器会失效呢?vector元素在内存中是顺序存储,试想:如果当前容器中已经存在了 ...
- C++: STL迭代器及迭代器失效问题
转载至:http://blog.csdn.net/wangshihui512/article/details/9791517 迭代器失效: 典型的迭代器失效. 首先对于vector而言,添加和删除操作 ...
- Python的程序结构[6] -> 迭代器/Iterator -> 迭代器浅析
迭代器 / Iteratior 目录 可迭代对象与迭代器协议 迭代器 迭代器(模拟)的建立 1 可迭代对象与迭代器协议 对于迭代器首先需要了解两个定义,迭代器协议 (Iterator Protocol ...
- python迭代器生成器-迭代器和list区别
迭代 生成 for循环遍历的原理 for循环遍历的原理就是迭代,in后面必须是可迭代对象 为什么要有迭代器 对于序列类型:字符串.列表.元组,我们可以使用索引的方式迭代取出其包含的元素.但对于字典.集 ...
- cb07a_c++_迭代器和迭代器的范围
cb07a_c++_迭代器和迭代器的范围c++primer第4版https://www.cnblogs.com/txwtech/p/12309989.html--每一种容器都有自己的迭代器--所有的迭 ...
- Python进阶:迭代器与迭代器切片
2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇.合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动.原系列的单篇就不删除了,毕竟也是 ...
- 迭代器Iterator与语法糖for-each
一.为什么需要迭代器 设计模式迭代器 迭代器作用于集合,是用来遍历集合元素的对象.迭代器迭代器不是Java独有的,大部分高级语言都提供了迭代器来遍历集合.实际上,迭代器是一种设计模式: 迭代器模式提供 ...
随机推荐
- Linux监控(OS,MySQL,Tomcat,Apache)
关于逐步脱离开发岗位的意见,老大已经批准了,接下来我的主要工作就是"运维+数据库管理".感谢杰民兄和小马哥能接受我的骚扰.接下来还会去骚扰他们,同一时候也会去骚扰董大爷,小刚总,心 ...
- 一入python深似海--对象的属性
Python中一切皆是对象,每一个对象都能够有多个属性.Python是怎样管理这些属性呢?我们来探讨一下. 属性的__dict__系统 对象的属性包括两部分:类属性和对象属性.对象的属性可能来自于其类 ...
- c# List集合学习
1---集合,可以理解成容器 泛型集合 非泛型集合2---使用集合用到的命名空间 using System.Collections.Generic;3---集合是如何来的?集合的前辈是数组,数组在内存 ...
- 负载均衡之lvs
集群(cluster):将一组计算机软/硬件连接起来,高度紧密的协作完成计算工作,其中的单个计算机通常称为节点.负载均衡集群(Load Balancing):通过负载均衡器,将负载尽可能平均分摊处理. ...
- dp水题
hdu 2084: #include <stdio.h> #include <iostream> #include <string.h> using namespa ...
- 【Codeforces Round #457 (Div. 2) A】 Jamie and Alarm Snooze
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 暴力往前走x分钟就好. 直到出现7为止. [代码] #include <bits/stdc++.h> using nam ...
- Jenkins学习总结(3)——Jenkins+Maven+Git搭建持续集成和自动化部署的
前言 持续集成这个概念已经成为软件开发的主流,可以更频繁的进行测试,尽早发现问题并提示.自动化部署就更不用说了,可以加快部署速度,并可以有效减少人为操作的失误.之前一直没有把这个做起来,最近的新项目正 ...
- HDU——T 2594 Simpsons’ Hidden Talents
http://acm.hdu.edu.cn/showproblem.php?pid=2594 Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...
- 使用TCP协议的NAT穿透技术 (转载)
其实很早我就已经实现了使用TCP协议穿透NAT了,但是苦于一直没有时间,所以没有写出来,现在终于放假有一点空闲,于是写出来共享之. 一直以来,说起NAT穿透,很多人都会被告知使用UDP打孔这个技术,基 ...
- java / C++ B+树代码
C++ 代码 #include <> JAVA 代码 package org.test.me.struct; /** * author: shuly * create: 2018-09-1 ...