java

位置:IT落伍者 >> java >> 浏览文章

Java设计模式之Iterator模式介绍


发布日期:2023年09月02日
 
Java设计模式之Iterator模式介绍
所谓Iterator模式即是Iterator为不同的容器提供一个统一的访问方式本文以java中的容器为例模拟Iterator的原理需要的朋友可以参考下

首先定义一个容器Collection接口

复制代码 代码如下:
package comnjuptzhblearniterator;
public interface Collection {
void add(Object o);
int size();
Iterator iterator();
}


定义一个Iterator迭代器的接口

复制代码 代码如下:
package comnjuptzhblearniterator;
public interface Iterator {
Object next();
boolean hasNext();
}


定义一个ArrayList实现Collection接口并写一个实现了Iterator接口的内部类

复制代码 代码如下:
package comnjuptzhblearniterator;
import comnjuptzhblearniteratorCollection;
public class ArrayList implements Collection {
Object[] objects = new Object[];
int index = ;
public void add(Object o) {
if(index == objectslength) {
Object[] newObjects = new Object[objectslength * ];
Systemarraycopy(objects newObjects objectslength);
objects = newObjects;
}
objects[index] = o;
index ++;
}

public int size() {
return index;
}

public Iterator iterator() {

return new ArrayListIterator();
}

private class ArrayListIterator implements Iterator {
private int currentIndex = ;
@Override
public boolean hasNext() {
if(currentIndex >= index) return false;
else return true;
}
@Override
public Object next() {
Object o = objects[currentIndex];
currentIndex ++;
return o;
}

}
}


编写测试程序TestMain

复制代码 代码如下:
package comnjuptzhblearniterator;
import comnjuptzhblearniteratorArrayList;
public class TestMain {
public static void main(String[] args) {
Collection c = new ArrayList();
for(int i=; i<; i++) {
cadd("string "+i);
}
Systemoutprintln(csize());
Iterator it = citerator();
while(ithasNext()) {
Object o = itnext();
Systemoutprintln(otoString() + " ");
}
}
}


运行结果

复制代码 代码如下:

string
string
string
string
string
string
string
string
string
string
string
string
string
string
string


从以上可以看出设计模式到处用到面向对象中的多态接口调用子类中的函数点击下载源代码

               

上一篇:java用getAddress方法取得IP地址

下一篇:java中IP地址转换十进制数实现代码