Java的Iterator
接口是Java集合框架中的一部分,定义在java.util
包中。它提供了一种遍历集合元素的标准方式,而不需要了解集合的具体实现细节。Iterator
接口适用于所有集合类,如List
、Set
、Map
等。要定义一个类实现Iterator
接口,你需要实现hasNext()
、next()
和(可选的)remove()
方法。
package test;
import java.util.Iterator;
import java.util.NoSuchElementException;
// 自定义集合类
class CustomCollection<T> implements Iterable<T> {
private T[] items;
private int size = 0;
@SuppressWarnings("unchecked")
public CustomCollection(int capacity) {
items = (T[]) new Object[capacity];
}
public void add(T item) {
if (size == items.length) {
throw new IllegalStateException("Collection is full");
}
items[size++] = item;
}
public T get(int index) {
if (index < 0 || index >= size) {
throw new IndexOutOfBoundsException("Index out of bounds");
}
return items[index];
}
public int size() {
return size;
}
@Override
public Iterator<T> iterator() {
return new CustomIterator();
}
// 内部迭代器类
private class CustomIterator implements Iterator<T> {
private int currentIndex = 0;
@Override
public boolean hasNext() {
return currentIndex < size;
}
@Override
public T next() {
if (!hasNext()) {
throw new NoSuchElementException("No more elements");
}
return items[currentIndex++];
}
@Override
public void remove() {
throw new UnsupportedOperationException("Remove not supported");
}
}
}
public class IteratorPatternDemo {
public static void main(String[] args) {
CustomCollection<String> collection = new CustomCollection<>(10);
collection.add("A");
collection.add("B");
collection.add("C");
Iterator<String> iterator = collection.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
System.out.println(item);
}
}
}