首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式==迭代器模式(Iterator)

2012-09-06 
设计模式==迭代器模式(Iterator)/* * 迭代器模式(Iterator) * * 类似于集合中的Iterator,使用迭代器来统一

设计模式==迭代器模式(Iterator)

/* * 迭代器模式(Iterator) * * 类似于集合中的Iterator,使用迭代器来统一不同集合对象的遍历方式, * 隐藏内部细节,用一个抽象迭代器,每个具体的集合类来实现特有的迭代器。 */package model;public class TestIterator {    public static void main(String[] args) {        Stack s = new Stack();        s.push("Liucy");        s.push("Huxz");        s.push("George");        LinkedList l = new LinkedList();        l.addFirst("Liucy");        l.addFirst("Huxz");        l.addFirst("George");        print(l.iterator());    }    public static void print(Itr it) {        while (it.hasNext()) {            System.out.println(it.next());        }    }}interface Itr {    boolean hasNext();    Object next();}class Stack {    Object[] os = new Object[10];    int index = 0;    private void expand() {        Object[] os2 = new Object[os.length * 2];        System.arraycopy(os, 0, os2, 0, os.length);        os = os2;    }    public void push(Object o) {        if (index == os.length)            expand();        os[index] = o;        index++;    }    public Object pop() {        index--;        Object o = os[index];        os[index] = null;        return o;    }    private class StackItr implements Itr {        int cursor = 0;        public boolean hasNext() {            return cursor < index;        }        public Object next() {            return os[cursor++];        }    }    public Itr iterator() {        return new StackItr();    }}class LinkedList {    private class Node {        Object o;        Node next;        public Node(Object o) {            this.o = o;        }        public void setNext(Node next) {            this.next = next;        }        public Node getNext() {            return this.next;        }    }    Node head;    public void addFirst(Object o) {        Node n = new Node(o);        n.setNext(head);        head = n;    }    public Object removeFirst() {        Node n = head;        head = head.getNext();        return n.o;    }    class LinkedListItr implements Itr {        Node currentNode = head;        public boolean hasNext() {            return this.currentNode != null;        }        public Object next() {            Node n = currentNode;            currentNode = currentNode.getNext();            return n.o;        }    }    public Itr iterator() {        return new LinkedListItr();    }}
?

热点排行