完成了上次迭代器设计的作业:
http://blog.csdn.net/acmman/article/details/43920153
LinkedList也需要写一个iterator方法,返回一个实现了Iterator的对象。该如何写?
LinkedList.java:
Node.java:
测试
LinkedListTest.java:
测试结果:
20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
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;//节点
@Override
public boolean hasNext() {
if(node.getNext()==null) return false;
else return true;
}
@Override
public 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