java学习笔记---迭代器
2013-04-26 19:41
134 查看
(1)Foreach与迭代器
Java SE5引入了新的被称为Iterable的接口,该接口包含一个能够产生Iterator的iterator()方法,并且Iterable接口被foreach用来在序列中移动,因此如果你创建了任何实现Iterable的类,都可以将它用于foreach语句中。
输出结果是:
如果直接将ral对象置于foreach语句中,将得到默认的前向迭代器,该迭代器是其父类ArrayList本身所拥有的。但是如果在该对象上调用reverse()方法,则置于foreach语句中的是反向的Iterable接口,因此可以反向输出。
Java SE5引入了新的被称为Iterable的接口,该接口包含一个能够产生Iterator的iterator()方法,并且Iterable接口被foreach用来在序列中移动,因此如果你创建了任何实现Iterable的类,都可以将它用于foreach语句中。
import java.util.*; public class AdapterMethodIdiom { public static void main(String[] args) { ReversibleArrayList<String> ral=new ReversibleArrayList<String> (Arrays.asList("To be or not to be".split(" "))); for(String s:ral) { System.out.print(s+" "); } System.out.println(); for(String s:ral.reversed()) { System.out.print(s+" "); } } } class ReversibleArrayList<T> extends ArrayList<T> { public ReversibleArrayList(Collection<T> c) { super(c); } public Iterable<T> reversed() { return new Iterable<T>() { public Iterator<T> iterator() { return new Iterator<T>() { int current=size()-1; public boolean hasNext() { return current>-1; } public T next() { return get(current--); } public void remove() { throw new UnsupportedOperationException(); } }; } }; } }
输出结果是:
To be or not to be be to not or be To
如果直接将ral对象置于foreach语句中,将得到默认的前向迭代器,该迭代器是其父类ArrayList本身所拥有的。但是如果在该对象上调用reverse()方法,则置于foreach语句中的是反向的Iterable接口,因此可以反向输出。
相关文章推荐
- Java学习笔记——应用矢量和迭代器来实现类似链表的功能
- Java开发学习笔记:迭代器(Iterator)
- JAVA学习笔记34——迭代器Iterator
- Java学习笔记--迭代器
- 自学Java系列 笔记5 Java学习之Iterator(迭代器)的一般用法
- Java学习笔记28(集合框架二:Iterator迭代器)
- Java学习笔记-迭代器(Iterator)
- (32)Java学习笔记——集合框架 / Collection 接口 / Iterator 迭代器
- Java学习笔记-迭代器(Iterator)
- Thinking in java学习笔记之迭代器
- java学习笔记(三)字符串
- 黑马程序员 java学习笔记——IO流1
- Cedar老师的java中的反射学习笔记(三)--获取方法信息
- JAVA学习笔记——JAVA基础语法(七)
- (40)Java学习笔记——IO流技术 / File类
- 菜鸟Java 学习笔记
- java的IO流学习笔记
- Java学习笔记(事件,内部类)
- 我的java学习笔记(11)关于装箱、参数可变方法和枚举类型
- Docker学习笔记之一,搭建一个JAVA Tomcat运行环境