(3)设计模式:Iterator
来源:互联网 发布:淘宝分享送红包在哪找 编辑:程序博客网 时间:2024/06/11 15:18
ArrayList和LinkedList的遍历方式不一样,如果像把这些集合的遍历方式统一起来,所以Iterator就产生了。
package com.bjsxt.dp.iterator;public interface Collection {void add(Object o);int size();Iterator iterator();}
package com.bjsxt.dp.iterator;import com.bjsxt.dp.iterator.Collection;public class ArrayList implements Collection {Object[] objects = new Object[10];int index = 0;public void add(Object o) {if(index == objects.length) {Object[] newObjects = new Object[objects.length * 2];System.arraycopy(objects, 0, newObjects, 0, objects.length);objects = newObjects;}objects[index] = o;index ++;}public int size() {return index;}public Iterator iterator() {return new ArrayListIterator();}private class ArrayListIterator implements Iterator {private int currentIndex = 0;@Overridepublic boolean hasNext() {if(currentIndex >= index) return false;else return true;}@Overridepublic Object next() {Object o = objects[currentIndex];currentIndex ++;return o;}}}
package com.bjsxt.dp.iterator;import com.bjsxt.dp.iterator.Collection;public class LinkedList implements Collection {Node head = null;Node tail = null;int size = 0;public void add(Object o) {Node n = new Node(o, null);if(head == null) {head = n;tail = n;}tail.setNext(n);tail = n;size ++;}public int size() {return size;}@Overridepublic Iterator iterator() {return null;}}
package com.bjsxt.dp.iterator;public interface Iterator {Object next();boolean hasNext();}
package com.bjsxt.dp.iterator;public class Node {public Node(Object data, Node next) {super();this.data = data;this.next = next;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public Node getNext() {return next;}public void setNext(Node next) {this.next = next;}private Object data;private Node next;}
package com.bjsxt.dp.iterator;public class Cat {public Cat(int id) {super();this.id = id;}private int id;@Overridepublic String toString() {return "cat:" + id;}}
package com.bjsxt.dp.iterator;import com.bjsxt.dp.iterator.ArrayList;import com.bjsxt.dp.iterator.LinkedList;public class Test {public static void main(String[] args) {//ArrayList al = new ArrayList();//LinkedList al = new LinkedList();Collection c = new ArrayList();for(int i=0; i<15; i++) {c.add(new Cat(i));}System.out.println(c.size());Iterator it = c.iterator();while(it.hasNext()) {Object o = it.next();System.out.print(o + " ");}}}
0 0
- (3)设计模式:Iterator
- 设计模式--迭代器模式(Iterator)
- 设计模式之--迭代器模式(Iterator)
- java设计模式-迭代器模式(Iterator)
- 设计模式之(Iterator)迭代器模式
- java设计模式-迭代器模式(Iterator)
- 设计模式:迭代器模式(Iterator)
- Iterator模式详解--设计模式(22)
- 设计模式:迭代器模式(Iterator)
- 设计模式(16)-迭代器模式(Iterator)
- 设计模式二(迭代子模式 Iterator)
- [设计模式]迭代器模式(Iterator)
- 设计模式之迭代子模式(Iterator)
- 【设计模式】迭代器模式(Iterator Pattern)
- 设计模式--Iterator模式
- 设计模式---Iterator模式
- 设计模式--Iterator 模式
- 【设计模式】Iterator模式
- SQL语句备份和还原数据库
- Linux入门:定制“资源管理器”样式
- 邻接表实现BFS广度优先搜索
- 最近的想法整理下
- 机器学习案例解析第一章笔记(ggplot,ggsave,merge,gsub,as.Date,read.*)
- (3)设计模式:Iterator
- Java编程中“为了性能”需做的26件事
- Neural Network based on Eorr Back Propagation典型BP网络c++实现
- 151. Reverse Words in a String Leetcode Python
- C/C++基本数据类型所占字节数
- java设计模式之观察者模式
- VMware Workstation+Linux+Xshell+Xftp+MySQL+SQLyog 配置
- Java中的集合的迭代器
- Android MediaPlayer使用注意