首先建个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 对于调用来说,方法都是一致的