迭代器的内部类实现
来源:互联网 发布:js原型链继承 编辑:程序博客网 时间:2024/06/05 16:33
练习http://blog.csdn.net/lovelion/article/details/9992931
设计一个逐页迭代器,每次可返回指定个数(一页)元素,并将该迭代器用于对数据进行分页处理。
//采用内部类的方式进行了实现,但是由于画在里面让关系不是很清楚,我就画在了外面,在这里内部类的使用和没使用内部类的效果是相同的
代码如下:
设计代码:
// 主要为实现分页效果,其他小方法就不实现了abstract class iterator {public abstract Object[] paging(int count);// 分页,count:返回多少个元素public abstract void allpaging(int count);public abstract Object next();public abstract boolean hasnext();}abstract class product {protected LinkedList linkedList;public product(LinkedList ll) {this.linkedList = ll;}public abstract LinkedList getlist();public abstract iterator iterator();}class productconcrete extends product {public productconcrete(LinkedList ll) {super(ll);// TODO 自动生成的构造函数存根}@Overridepublic LinkedList getlist() {// TODO 自动生成的方法存根return linkedList;}// 创建一个迭代器public iterator iterator() {return new iteratorconcrete(this);}// 内部类,专门负责逐页迭代器的管理class iteratorconcrete extends iterator {private productconcrete pc;// 在这里坐着随机采用了一种数据结构linked,这是一种首尾链表,如果感兴趣的大家就可以去研究一下// 在这里我把Linkedlist当做普通的arraylist来使用,所以存在cusour,虽然性能上可能并不好,但是没关系private int cusuor;private LinkedList linkedList;public iteratorconcrete(productconcrete pc) {// TODO 自动生成的构造函数存根this.pc = pc;linkedList = pc.getlist();cusuor = 0;}@Overridepublic Object[] paging(int count) {// TODO 自动生成的方法存根ArrayList<Object> o = new ArrayList<>();int index =0;while (hasnext() && index<count) {Object object = next();o.add(object);System.out.println(object);index++;}return o.toArray();}@Overridepublic Object next() {// TODO 自动生成的方法存根if (hasnext()) {cusuor++;return linkedList.get(cusuor);}return null;}@Overridepublic boolean hasnext() {// TODO 自动生成的方法存根return cusuor < linkedList.size()-1;}@Overridepublic void allpaging(int count) {// TODO 自动生成的方法存根while(hasnext()){System.out.println("----分页线----");paging(count);}}}
客户端代码:public class Client {public static void main(String[] args) {// TODO 自动生成的方法存根LinkedList ll = new LinkedList<>();ll.add(3);ll.add("dfjkslfj");ll.add("FDjksl");ll.add(4535);ll.add(3);ll.add("dfjkslfj");ll.add("FDjksl");ll.add(4535);ll.add(3);ll.add("dfjkslfj");ll.add("FDjksl");ll.add(4535);product product = new productconcrete(ll);iterator iterator = product.iterator();//进行单个分页//Object[] o = iterator.paging(6);//输出o即可//进行全体分页iterator.allpaging(3);}}
阅读全文
0 0
- 迭代器的内部类实现
- Java内部类的实现
- java 内部类的实现
- 匿名内部类的实现
- 内部类实现方式的比较(匿名内部类,局部内部类)
- 内部类+迭代器设计模式的java实现。。。
- 用内部类实现接口的例子
- 用内部类实现多线程的方案
- 内部类的使用1--隐藏实现
- 匿名内部类的实现形式
- 关于内部类的实现方式
- 15 内部类和ArrayList的实现
- java内部类的oc实现
- 匿名内部类的两种实现
- 剖析内部类如何实现的
- 内部类的四种实现方式
- 内部类实现定时器的例子
- java内部类的OC实现方法
- Android组件学习笔记(简易绘画板)
- python 编码 中文汉字显示问题小结
- 【SignalR学习系列】3. SignalR实时高刷新率程序
- leetcode 125
- 黑马商城项目_导航条圆点的定位
- 迭代器的内部类实现
- Spark简单函数 JAVA/SCALA
- C#通过项目预处理事件获取SVN版本号
- string的特性
- 【Android】oui.txt格式化的sqlite数据库文件直接导入
- MINI TUTORIAL: NEWSLETTER POPUP IN MAGENTO (WITH COOKIE)
- func_get_args()、func_get_arg()与func_num_args()
- Python支持的所有转移序列
- 【SignalR学习系列】4. SignalR广播程序