设计模式之2 iterator

设计模式之2 iterator

ID:40313357

大小:24.09 KB

页数:6页

时间:2019-07-30

设计模式之2 iterator_第1页
设计模式之2 iterator_第2页
设计模式之2 iterator_第3页
设计模式之2 iterator_第4页
设计模式之2 iterator_第5页
资源描述:

《设计模式之2 iterator》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、设计模式之2iterator模拟实现arraylist。packagecom.bjsxt.dp.iterator;importcom.bjsxt.dp.iterator.*;publicclassArrayListimplementsCollection{//初始化就是10个对象Object[]objects=newObject[10];intindex=0;publicvoidadd(Objecto){//如果到达数组上限,就翻倍,并且把原数组里面的所有内容复制到新数组当中if(index==objects.length){Ob

2、ject[]newObjects=newObject[objects.length*2];System.arraycopy(objects,0,newObjects,0,objects.length);//最关键的一步在这里,把老数组的引用指向新数组,那么从arraylist的使用者的角度来说,是看不到内部数组翻倍了。objects=newObjects;}objects[index]=o;index++;}publicintsize(){//返回的是数组当前的index,而不是数组的真实大小returnindex;}//向外提供

3、的iteratorpublicIteratoriterator(){returnnewArrayListIterator();}//通过一个内部类来实现iterator接口。privateclassArrayListIteratorimplementsIterator{privateintcurrentIndex=0;//目前index的值大于数组的size,就没有下一个了。publicbooleanhasNext(){if(currentIndex>=index)returnfalse;elsereturntrue;}//返回当

4、前数组对应的index处的对象,并把游标指向下一个位置publicObjectnext(){Objecto=objects[currentIndex];currentIndex++;returno;}}}通过一个通用的接口,collection。packagecom.bjsxt.dp.iterator;//通过接口,约束方法的名字publicinterfaceCollection{voidadd(Objecto);intsize();//指定了容器类必须提供iterator方法,这个方法的返回值是IteratorIteratori

5、terator();}通过另外一个接口,iteratorpackagecom.bjsxt.dp.iterator;publicinterfaceIterator{//两个方法,第一是返回一个object对象,第二是看还有没有下一个节点。Objectnext();booleanhasNext();}对于linklist,里面放的元素是node:packagecom.bjsxt.dp.iterator;publicclassNode{//node的构造方法,传递两个参数,第一是数据本身,第二就是指向下一个节点的nextpublicNo

6、de(Objectdata,Nodenext){super();this.data=data;this.next=next;}publicObjectgetData(){returndata;}publicvoidsetData(Objectdata){this.data=data;}publicNodegetNext(){returnnext;}publicvoidsetNext(Nodenext){this.next=next;}privateObjectdata;privateNodenext;}linkedlistpack

7、agecom.bjsxt.dp.iterator;importcom.bjsxt.dp.iterator.Collection;publicclassLinkedListimplementsCollection{//第一个节点Nodehead=null;//最后一个节点Nodetail=null;//大小intsize=0;//添加项目的方法publicvoidadd(Objecto){//添加的第一个节点Noden=newNode(o,null);//只有一个节点的情况,它既是头又是尾if(head==null){head=n;

8、tail=n;}//每次在最后添加节点,把上一个节点的next指向新添加的节点,并把新节点的next指向null//当前tail(也就是现在list当中的最后一个元素)的next指向新节点tail.setNext(n);//新节点成为新的tail,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。