《Thinking in Java》笔记--适配器模式应用及增强for循环小记
来源:互联网 发布:股大师软件下载 编辑:程序博客网 时间:2024/06/05 08:46
书上243页写了一个适配器模式的应用,摘抄如下:
“适配器”部分来自于设计模式,因为你必须提供特定接口以满足foreach语句,当你有一个接口并需要另一个接口时,编写适配器就可以解决问题。在这里,我希望在默认的前向迭代器的基础上,添加产生反响迭代器的能力,因此我不能使用覆盖,而是添加了一个能产生Iterable对象的方法,该对象可以用于foreach语句。
public class ReversibleArrayList<T> extends ArrayList<T> { public ReversibleArrayList(Collection<T> c) { super(c); } public Iterable<T> reversed() { return new Iterable<T>() { @Override public Iterator<T> iterator() { return new Iterator<T>() { int current = size() - 1; @Override public boolean hasNext() { return current > -1; } @Override public T next() { return get(current--); } @Override public void remove() { throw new UnsupportedOperationException(); } }; } }; }}
public class AdapterMethodIdiom { public static void main(String[] args) { ReversibleArrayList<String> ral = new ReversibleArrayList<>( Arrays.asList("To be or not to be".split(" "))); for(String s : ral) { //虚拟机会自动调用默认的iteror方法返回Iterable,所以不用指定 System.out.print(s + " "); } System.out.println(); for(String s : ral.reversed()) { //需要指定使用的Iterable System.out.print(s + " "); } }}
从上述例子也可以看出,增强for循环中是通过获取Iterable对象完成遍历的,遍历Collection时,虚拟机会自动调用iteraor方法使用默认的Iterable,其他情况需要在增强for循环中指定Iterable。
参考http://blog.csdn.net/u011392897/article/details/54562596
阅读全文
0 0
- 《Thinking in Java》笔记--适配器模式应用及增强for循环小记
- Thinking in java学习笔记2--适配器模式
- java学习笔记【五】--thinking in java 小记录2
- Thinking in Java学习小记
- java笔记(增强for循环)
- 【java学习笔记】for增强循环
- Java学习笔记---增强for循环
- Java-增强for循环(学习笔记)
- JAVA增强for循环
- java 增强 for循环
- JAVA 增强for 循环
- Java增强for循环
- java增强for循环
- JAVA-增强for循环
- java增强for循环
- Java增强for循环
- Java增强for循环
- java-增强for循环
- 三种静态查找算法:顺序、二分/折半、索引/分块查找
- shadowsocks 搭建与使用
- 插件--底部弹框
- [js]this的工作方式
- android+测试计划
- 《Thinking in Java》笔记--适配器模式应用及增强for循环小记
- Linux系列:Linux中如何安装.rpm、.tar、.tar.gz和tar.bz2文件
- Kotlin学习教程(一)
- POI读取Excel 各种特殊数字和类型的转换。
- Python 中的 if __name__ == '__main__' 该如何理解
- LeetCode 2.add Two Numbers
- LeetCode.643 Maximum Average Subarray I
- 你所不知道的21个云服务器的应用实践———云计算综合入门指南
- [Leetcode] 479. Largest Palindrome Product 解题报告