【设计模式】Iterator设计作业-设计LinkedList的iterator

来源:互联网 发布:apache http有什么用 编辑:程序博客网 时间:2024/06/06 05:32
完成了上次迭代器设计的作业:http://blog.csdn.net/acmman/article/details/43920153
LinkedList也需要写一个iterator方法,返回一个实现了Iterator的对象。该如何写?

LinkedList.java:
package cn.edu.hpu.iterator;public class LinkedList implements Collection{Node head=null;//头节点(以后的元素通过next得到)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;}public Iterator iterator(){return new LinkedListIterator();}private class LinkedListIterator implements Iterator{private Node node=head;//节点@Overridepublic boolean hasNext() {if(node.getNext()==null) return false;else return true;}@Overridepublic Object next() {Object o=node.getNext().getData();node=node.getNext();return o;}}}

Node.java:
package cn.edu.hpu.iterator;public class Node {private Object data;private Node next;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;}}

测试
LinkedListTest.java:
package cn.edu.hpu.iterator;import cn.edu.hpu.iterator.LinkedList;public class LinkedListTest {public static void main(String[] args) {Collection c=new LinkedList();for(int i=0;i<20;i++){c.add(new Cat(i));}System.out.println(c.size());LinkedList ll=(LinkedList)c;Iterator it=ll.iterator();while(it.hasNext()){Cat cat=(Cat)it.next();System.out.print(cat.getId()+" ");}}}

测试结果:
20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 

程序运行正常,作业完成

转载请注明出处:http://blog.csdn.net/acmman/article/details/43924261

0 0