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

首先建个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值