简单模拟ArrayList-迭代器设计模式

底层结构为数组;
[java]  view plain copy
  1. import java.util.Iterator;  
  2. public class MyArrayList<E> implements Iterable<E>{  
  3.     public static int InitSize=2;  
  4.     private Object[] elementData=new Object[InitSize];  
  5.     private static int size;  
  6.     public <E> void add(E e){  
  7.         if(size>=InitSize){//如果超出集合的大小,则每次扩充1.5倍  
  8.             InitSize=InitSize+(InitSize/2==0?1:InitSize/2);  
  9.             Object[] elementTemp=new Object[InitSize];  
  10.             System.arraycopy(elementData, 0,elementTemp , 0, size);  
  11.             elementData=elementTemp;  
  12.         }  
  13.         elementData[size]=e;  
  14.         size++;  
  15.     }  
  16.     public E get(int index){  
  17.         if(index<0 || index>=size){  
  18.             throw new ArrayIndexOutOfBoundsException("出错");  
  19.         }  
  20.         return (E)elementData[index];  
  21.     }  
  22.     public static int getSize(){  
  23.         return size;  
  24.     }  
  25.     //实现Iterable接口  
  26.     //使用Iterator进行遍历元素  
  27.     //不实现的话该类就无法进行增强for循环的操作  
  28.     public Iterator<E> iterator() {  
  29.         return new Itr();  
  30.     }  
  31.     class Itr implements Iterator<E>{  
  32.   
  33.         int index=0;  
  34.         public boolean hasNext() {  
  35.             return index<size;  
  36.         }  
  37.   
  38.         public E next() {  
  39.             return get(index++);  
  40.         }  
  41.   
  42.         public void remove() {  
  43.               
  44.         };  
  45.           
  46.     }  
  47. }  
[java]  view plain copy
  1. public class Test {  
  2. public static void main(String[] args) {  
  3.     MyArrayList<String> list=new MyArrayList<String>();  
  4.     list.add("wwww我");  
  5.     list.add("a");  
  6.     list.add("为");  
  7.     list.add("人");  
  8.     list.add("g");  
  9.     list.add("盘");  
  10.     list.add("才v");  
  11.   
  12.     System.out.println("集合元素个数:"+list.getSize());  
  13.     System.out.println("集合大小:"+list.InitSize);  
  14.     for(Object s:list){  
  15.         System.out.println(s);  
  16.     }  
  17. }  
  18. /**运行结果: 
  19.     集合元素个数:7 
  20.     集合大小:9 
  21.     wwww我 
  22.     a 
  23.     为 
  24.     人 
  25.     g 
  26.     盘 
  27.     才v 
  28.  */  
  29. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值