设计模式-iterator 简单模拟ArrayList与LinkList

来源:互联网 发布:淘宝远程装系统骗局 编辑:程序博客网 时间:2024/05/21 00:55

首先建个List的接口,这里就做两个方法。

package test.Iterator;


public interface List<E> {
void add(E object);
void print();

}


实现ArrayList以及LinkList


Arraylist:


package test.Iterator;


public class ArrayList<E> implements List<E> {

private Object[] objects = new Object[10];
private int index=0;
@Override
public void add(E object) {
if(index>=objects.length){
Object[] o=new Object[objects.length*2];
System.arraycopy(objects, 0, o, 0, objects.length);
objects=o;
}
objects[index]=object;
index++;
}
@Override
public void print() {
for (int i=0;i<index;i++) {
System.out.println(objects[i]);
}
}

}


LinkList:

package test.Iterator;


public class LinkList<E> implements List<E> {

private Node head;
private Node index;
@Override
public void add(E object) {
Node node =new Node();
node.setDate(object);
node.setNext(null);
if(head==null){
head=new Node();
head.setDate(null);
head.setNext(node);
index=head;
}else
index.setNext(node);
index=node;
}



@Override
public void print() {
Node h=this.head.getNext();

while(h!=null){
System.out.println(h.getDate()+" ");
h=h.getNext();
}
}


private class Node{
private E date;
private Node next;
public E getDate() {
return date;
}
public void setDate(E date) {
this.date = date;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}

}

}



使用:

List l1=new LinkList();
List l2=new ArrayList();
for(int i=0; i<200;i++){
l1.add("l1:   "+i);
l2.add("l2:   "+i);
}
l1.print();
l2.print();

这样的好处是,不论使用数组实现的ArrayList还是使用链表实现的LinkList   对于调用来说,方法都是一致的


0 0
原创粉丝点击