设计模式二(迭代子模式 Iterator)
2017-03-13 10:05
387 查看
迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见,如果对集合类比较熟悉的话,理解本模式会十分轻松。
这句话包含两层意思:一是聚集对象;二是迭代器遍历对象。
迭代主要在集合类中应用,在开发过程极少用到,主要作用是理解集合。
一:数组的迭代
1、定一个数据集合类。
3、测试代码
二:链表的迭代
1、定义节点:
2、定义链表集合迭代器:
这句话包含两层意思:一是聚集对象;二是迭代器遍历对象。
迭代主要在集合类中应用,在开发过程极少用到,主要作用是理解集合。
一:数组的迭代
1、定一个数据集合类。
package interator.arrayList; /** * 数组对象的集合 * */ public class ArrayList<T>{ private Object[] objs = new Object[10]; private int index = 0; public void add(T obj) { if(index==objs.length){ Object[] newObjs = new Object[index+10]; System.arraycopy(objs, 0, newObjs, 0, newObjs.length); objs = newObjs; } objs[index] = obj; index++; } public T get(int i) { if(i>=0 && i<=this.index){ return (T)objs[i]; } else{ return null; } } public T First() { return this.get(0); } public T Last() { return this.get(this.index-1); } public int length(){ return this.index; } }2、定一个cat.java类、Dog.java类
package interator.arrayList; public class Cat{ private String name; private int old; public Cat(String name,int old){ this.name = name; this.old = old; } @Override public String toString(){ return this.getClass().getName() + ",name:"+this.name+",old:"+this.old; } }
package interator.arrayList; public class Dog{ private String name; private int old; public Dog(String name,int old){ this.name = name; this.old = old; } @Override public String toString(){ return this.getClass().getName() + ",name:"+this.name+",old:"+this.old; } }
3、测试代码
package interator.arrayList; public class Main { public static void main(String arg[]){ ArrayList<Cat> carArry = new ArrayList<>(); carArry.add(new Cat("cat1",1)); carArry.add(new Cat("cat2",2)); carArry.add(new Cat("cat3",3)); for (int i=0;i<carArry.length();i++) { String str = carArry.get(i).toString(); System.out.println(str); } ArrayList<Dog> dogArry = new ArrayList<>(); dogArry.add(new Dog("dog1",1)); dogArry.add(new Dog("dog2",2)); dogArry.add(new Dog("dog3",3)); for (int i=0;i<carArry.length();i++) { String str = dogArry.get(i).toString(); System.out.println(str); } } }
二:链表的迭代
1、定义节点:
package interator.arrayList; public class Node { private Node next; private Object obj; public Node(Node node,Object obj){ super(); this.next = node; this.obj = obj; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } public Object getObj() { return obj; } public void setObj(Object obj) { this.obj = obj; } }
2、定义链表集合迭代器:
package interator.arrayList; public class LinkedList<T> { private Node head = null; private Node tail = null; private int size = 0; public void add(T obj){ if(obj==null){ return; } else{ if(head==null){ head = new Node(null,obj); tail = new Node(null,null); head.setNext(tail); } else{ Node n = new Node(null,null); tail.setObj(obj); tail.setNext(n); tail = n; } this.size++; } } public int size(){ return this.size; } public T getFirst(){ return (T) this.head.getObj(); } public T get(int i){ if(i>=0 && i<=this.size-1){ Node node = this.head; for(int ii=0;ii<this.size;ii++){ if(ii==i){ return (T) node.getObj(); } else{ node = node.getNext(); } } } return null; } }3、测试数据
package interator.arrayList; public class LinkedListMain { public static void main(String args[]){ LinkedList<Cat> linkedList = new LinkedList<>(); linkedList.add(new Cat("cat1",1)); linkedList.add(new Cat("cat2",2)); linkedList.add(new Cat("cat3",3)); System.out.println(linkedList.getFirst()); System.out.println(linkedList.size()); System.out.println(linkedList.get(2)); } }
相关文章推荐
- JAVA设计模式(16) —<行为型>迭代子模式(Iterator)
- 《Java与模式》学习笔记:设计模式——迭代子(Iterator)模式
- 设计模式(行为型模式) ----- 迭代子模式(Iterator)
- java设计模式16——迭代子模式(Iterator)
- Java开发中的23种设计模式详解----迭代子模式(Iterator)
- JAVA--迭代子模式(Iterator)--设计模式十六
- [设计模式]迭代子模式 Iterator
- [工作中的设计模式]迭代子模式Iterator
- 设计模式 迭代子模式(Iterator)
- Java设计模式-迭代子模式(Iterator)
- 设计模式笔记(9 INTERPRETER & ITERATOR)
- 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
- 设计模式学习笔记十七——Iterator模式
- 常见设计模式的解析和实现(C++)之十八-Iterator模式
- .NET设计模式-迭代器模式(Iterator Pattern)
- 设计模式之Iterator
- 设计模式与泡mm的关系之iterator迭代模式及再思考
- 设计模式之Iterator迭代模式
- 设计模式示例四 Observer(观察者)和Iterator(迭代器)
- .Net中的设计模式——Iterator模式(对理解IEnumerable接口有帮助)