Foreach与迭代器
来源:互联网 发布:江湖婚庆 3.0源码 编辑:程序博客网 时间:2024/05/18 15:25
Iterable接口包含一个能够产生Iterator的iterator()方法,并且Iterable接口被foreach用来在序列中移动,意思就是想要将一个类用在foreach语句中它就要实现Iterable.
package com.zhu.foreach;import java.util.Iterator;public class ForEachCollections implements Iterable<String>{String words[]="i like java very much".split(" ");@Overridepublic Iterator<String> iterator() {// TODO Auto-generated method stubreturn new Iterator(){private int index=0;@Overridepublic boolean hasNext() {// TODO Auto-generated method stubreturn index<words.length;}@Overridepublic String next() {// TODO Auto-generated method stubreturn words[index++];}@Overridepublic void remove() {// TODO Auto-generated method stub}};}public static void main(String[] args) {for(String s:new ForEachCollections()){System.out.println(s);}}}
一个查看操作系统环境变量的示例
package com.zhu.foreach;import java.util.Map;public class EnvironmentVariables { public static void main(String[] args) { for(Map.Entry<String, String> entry:System.getenv().entrySet()){ System.out.println("key:"+entry.getKey()+" value:"+entry.getValue()); } }}
在默认的前向迭代器的基础上添加反向迭代的能力,因此我们不能使用覆盖,而是添加一个能够产生Iterable对象的方法。
package com.zhu.foreach;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Iterator;public class RevArrayList<T> extends ArrayList<T>{public RevArrayList(Collection<T>c){super(c);}public Iterable<T> reversed(){return new Iterable<T>(){@Overridepublic Iterator<T> iterator() {// TODO Auto-generated method stubreturn new Iterator(){private int index=size()-1;@Overridepublic boolean hasNext() {// TODO Auto-generated method stubreturn index>-1;}@Overridepublic Object next() {// TODO Auto-generated method stubreturn get(index--);}@Overridepublic void remove() {// TODO Auto-generated method stub}};}};}public static void main(String[] args) {RevArrayList<String>revArrayList=new RevArrayList<String>(Arrays.asList("i like java very much".split(" ")));for(String s:revArrayList){System.out.println(s);}System.out.println("-------------------------------");for(String s:revArrayList.reversed()){System.out.println(s);}}}
阅读全文
0 0
- Foreach与迭代器
- Foreach与迭代器
- foreach与迭代器
- java中Foreach与迭代器
- java中foreach与迭代器
- Java编程思想11.13-Foreach与迭代器
- 从头认识java-9.13 foreach与迭代器
- Foreach与Foreach-Object的性能区别
- foreach与IEnumerator
- foreach与hashtable
- foreach与数组
- c# for与foreach
- Foreach与可变参数
- Iterator与foreach遍历
- .Net学习难点讨论系列11 - foreach与迭代器
- IQueryable与foreach的困惑?
- for 与 foreach主要区别
- foreach的缺点与优点
- BZOJ1260[CQOI2007]涂色paint (区间DP)
- C#知识学习 遗忘的记忆 -第二天
- 2971:抓住那头牛
- Froms的使用实例
- 交换机的基础知识
- Foreach与迭代器
- 排序--直接插入排序
- UGUI(七)界面拖动和焦点界面
- 【七日牧函】基督教传统中的友谊
- gec210 i2c程序io模拟方式实现
- shiro-helloworld(1)
- Shell教程
- 排序--冒泡排序
- vb.net 教程 5-7 Bitmap类 2