这是一个自定义的链表集合,来模拟集合中的Iterator这个迭代器,具体代码如下。
节点类:
package com.qbd.duan.iterator;
public class Node {
private Object object;
private Node node;
public Node(Object object, Node node) {
this.object = object;
this.node = node;
}
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
public Node getNode() {
return node;
}
public void setNode(Node node) {
this.node = node;
}
}
迭代器接口:
package com.qbd.duan.iterator;
public interface Iterator {
public boolean hasNext();
public Object next();
}
集合抽象接口:
package com.qbd.duan.iterator;
public interface Collection{
public void add(Object o);
public void remove(Object o);
public Iterator iterator();
public int size();
}
自定义链表类:
package com.qbd.duan.iterator;
public class LinkendList implements Collection {
private Node head=null;
private Node last=null;
private int size;
@Override
public void add(Object o) {
// TODO Auto-generated method stub
Node node=new Node(o, null);
if(head==null){
head=node;
last=node;
}
last.setNode(node);
last=node;
size++;
}
@Override
public void remove(Object o) {
// TODO Auto-generated method stub
}
@Override
public Iterator iterator() {
// TODO Auto-generated method stub
return new ListIterator();
}
public class ListIterator implements Iterator{
private int now=0;
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
if(now>=size){
return false;
}
return true;
}
@Override
public Object next() {
// TODO Auto-generated method stub
now++;
Object object=null;
Node first=head;
for(int i=0;i<now-1;i++){
first=first.getNode();
}
object=first.getObject();
return object;
}
}
public int size() {
// TODO Auto-generated method stub
return size;
}
}
测试类:
package com.qbd.duan.iterator;
public class Main {
public static void main(String[] args) {
Collection c=new LinkendList();
for(int i=0;i<10;i++){
c.add(i);
}
Iterator iterator=c.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}