Java迭代器实现,要求迭代器使用数组存储数据
时间: 2024-03-25 16:41:38 浏览: 12
好的,我来给你讲一下Java迭代器的数组实现。
首先,我们需要定义一个迭代器类,这个类需要实现Java标准库中的Iterator接口。Iterator接口中包含了 hasNext()、next()、remove() 三个方法。接下来,我们可以定义一个内部类来实现这个迭代器接口,代码如下:
```
public class ArrayIterator<E> implements Iterator<E> {
private int cursor;
private E[] array;
public ArrayIterator(E[] array) {
this.array = array;
this.cursor = 0;
}
@Override
public boolean hasNext() {
return cursor < array.length;
}
@Override
public E next() {
if (!hasNext()) {
throw new NoSuchElementException();
}
return array[cursor++];
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
```
在这个迭代器类中,我们使用了一个 cursor 指针来记录当前迭代到了数组中的哪个位置。在 hasNext() 方法中,我们判断 cursor 是否小于数组的长度,如果是则表示还有下一个元素可以迭代。在 next() 方法中,我们首先判断是否还有下一个元素,如果没有则抛出 NoSuchElementException 异常,否则返回当前位置的元素,并将 cursor 指针向后移动一位。在 remove() 方法中,我们直接抛出 UnsupportedOperationException 异常,因为我们不支持删除操作。
现在,我们就可以使用这个迭代器来遍历一个数组了,例如:
```
Integer[] array = {1, 2, 3, 4, 5};
Iterator<Integer> iterator = new ArrayIterator<>(array);
while (iterator.hasNext()) {
Integer element = iterator.next();
System.out.println(element);
}
```
这段代码会输出数组中的每一个元素,即:
```
1
2
3
4
5
```
希望我的回答能够帮到你!