深入理解foreach循环
来源:互联网 发布:playclub 第三方软件 编辑:程序博客网 时间:2024/05/23 00:26
foreach循环是JavaSE5.0的新特性,foreach循环只能作用于2种情况:
一:数组;
二:实现了iterable接口;
数组不需要验证,很熟悉,演示第二种情况,并且采用一个逆序的方式演示:
class ReverseList<E> extends ArrayList<E>{public ReverseList(Collection<E> c){super(c);}public Iterable<E> reverse(){return new Iterable<E>(){@Overridepublic Iterator<E> iterator() {return new Iterator<E>(){private int i = size() - 1;@Overridepublic boolean hasNext() {return i>=0;}@Overridepublic E next() {return get(i--);}@Overridepublic void remove() {throw new UnsupportedOperationException();}};}};}}
测试示例:
public class ForeachTest {@Testpublic void testForeach(){String strs = "I have a dream";ReverseList<String> list = new ReverseList<String>(Arrays.asList(strs.split(" ")));for(String str : list){System.out.print(str + " ");}System.out.println();for(String str : list.reverse()){System.out.print(str + " ");}}}
输出结果:
I have a dream
dream a have I
从结果可以看出,实现了iterable接口,就可以使用foreach增强循环;
平常我们经常使用foreach循环,原因是Collection接口直接从Iterable接口继承了,所以我们能使用这个增强循环;而且从调用reverse方法可以看出,foreach第二个参数实际上传的是一个Iterable接口;
另外需要注意2个接口的区别,iterable接口,里面只有一个操作方法,即iterator方法,用于返回一个Iterator接口;而Iterator接口,里面三个方法,hasNext,next,remove
- 深入理解foreach循环
- 深入 foreach 和 for 循环的区别
- for循环深入理解
- 深入理解for循环
- 深入理解PHP原理之foreach
- 深入理解MFC消息循环
- 深入探讨array_map、foreach、for循环处理数组的效率
- foreach循环
- foreach循环
- foreach循环
- foreach 循环
- foreach循环
- foreach循环
- foreach循环
- foreach循环
- foreach循环
- foreach循环
- foreach循环
- spring mvc 框架搭建及详解
- 【朴素贝叶斯】实战朴素贝叶斯_代码实现_特征选择2
- analyze index...
- 职场解释系:张三丰的接班人计划
- 条款16:成对使用new和delete时要采取相同的形式
- 深入理解foreach循环
- 黑马程序员____数据清洗实验
- 项目中为什么有时要用单例模式?
- 【C++ Primer 学习笔记】chapter9 顺序容器
- 9-7数组
- poj 3974 Manacher Algorithm (求最长回文)
- 国内课题基金英文翻译
- 定制ABAP編輯器的中內容(Editor中自動生成代碼)
- 风雨20年:我所积累的20条编程经验