设计模式二(迭代子模式 Iterator)
来源:互联网 发布:我们的大数据时代2017 编辑:程序博客网 时间:2024/05/16 00:41
迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见,如果对集合类比较熟悉的话,理解本模式会十分轻松。
这句话包含两层意思:一是聚集对象;二是迭代器遍历对象。
迭代主要在集合类中应用,在开发过程极少用到,主要作用是理解集合。
一:数组的迭代
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;}@Overridepublic 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;}@Overridepublic 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));}}
0 0
- 设计模式二(迭代子模式 Iterator)
- 设计模式之Iterator(二)
- 设计模式之迭代子模式(Iterator)
- 设计模式之二:iterator
- 设计模式(c++)笔记之二十二(Iterator模式)
- 设计模式学习与实践(二十二)----迭代子模式(iterator)
- 设计模式--Iterator模式
- 设计模式---Iterator模式
- 设计模式--Iterator 模式
- 【设计模式】Iterator模式
- 设计模式之二十二------ Iterator(迭代器)
- (3)设计模式:Iterator
- 浅谈Java设计模式(十六)迭代子模式(Iterator)
- java设计模式16——迭代子模式(Iterator)
- JAVA--迭代子模式(Iterator)--设计模式十六
- 23种设计模式之二十二(行为模式)Iterator模式
- 设计模式--迭代器模式(Iterator)
- 设计模式之--迭代器模式(Iterator)
- HTML5-列表标签
- MFC CString转int、double、char类型
- 居委会街道管理系统
- 内测 第三题
- Spring Boot学习记录(二)--thymeleaf模板
- 设计模式二(迭代子模式 Iterator)
- 多线程
- STM32L431之SPI时钟翻倍问题
- PS快捷键
- [译]Java并发:@GuardedBy----Android中的注解
- php基础第三篇
- java程序中没有错,但是项目上面显示一个红叉的解决办法
- Android studio 你不知道的调试技巧
- omitNorms for field in solr schema(转载地址:http://blog.csdn.net/fengzanfeng/article/details/22056121)