迭代器模式 java代码
时间: 2023-10-16 15:16:58 浏览: 111
迭代器模式是一种行为型设计模式,它提供了一种访问复杂数据结构的方式,而不需要暴露其内部实现细节。迭代器模式通过提供一个统一的接口,使得客户端可以逐个访问集合中的元素,而不需要知道其底层数据结构。
下面是一个简单的Java实现迭代器模式的例子:
```java
// 定义迭代器接口
public interface Iterator<T> {
boolean hasNext();
T next();
}
// 定义集合接口
public interface Collection<T> {
void add(T element);
Iterator<T> iterator();
}
// 实现迭代器接口
public class ArrayListIterator<T> implements Iterator<T> {
private List<T> list;
private int currentIndex;
public ArrayListIterator(List<T> list) {
this.list = list;
this.currentIndex = 0;
}
@Override
public boolean hasNext() {
return currentIndex < list.size();
}
@Override
public T next() {
return list.get(currentIndex++);
}
}
// 实现集合接口
public class ArrayList<T> implements Collection<T> {
private List<T> list = new java.util.ArrayList<>();
@Override
public void add(T element) {
list.add(element);
}
@Override
public Iterator<T> iterator() {
return new ArrayListIterator<>(list);
}
}
// 客户端代码
public class Client {
public static void main(String[] args) {
Collection<String> collection = new ArrayList<>();
collection.add("Java");
collection.add("Python");
collection.add("C++");
Iterator<String> iterator = collection.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
```
在上面的代码中,我们定义了一个迭代器接口和一个集合接口。迭代器接口包含了`hasNext()`和`next()`方法,而集合接口包含了`add()`和`iterator()`方法。`ArrayListIterator`类实现了迭代器接口,而`ArrayList`类实现了集合接口。
在客户端代码中,我们首先创建了一个`ArrayList`对象,然后向其中添加了三个字符串元素。接着,我们调用`iterator()`方法获取一个迭代器对象,然后使用`while`循环逐个访问集合中的元素,并输出它们的值。
这样,我们就实现了迭代器模式,使得客户端可以逐个访问集合中的元素,而不需要知道其底层数据结构。
阅读全文