📅  最后修改于: 2023-12-03 15:28:45.611000             🧑  作者: Mango
本题描述了一个基于Java语言的简单的迭代器类实现。要求学生理解该类的实现以及基于该类实现的迭代器在循环中的使用方式。
给出的代码片段如下:
class MyIterator<T> implements Iterator<T> {
private List<T> data;
private int index;
public MyIterator(List<T> data) {
this.data = data;
index = 0;
}
@Override
public boolean hasNext() {
return index < data.size();
}
@Override
public T next() {
return data.get(index++);
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
该代码实现了一个泛型类MyIterator
,它实现了Java标准库中的Iterator
接口。
MyIterator
类中有三个成员变量:data
表示迭代器的数据源,是一个泛型列表,index
表示当前迭代到的索引位置。
在构造函数中,将数据源和索引位置初始化。
hasNext
方法实现了判断是否还有下一个元素的机制,方法返回一个布尔值,如果当前索引位置小于数据源的大小,则表示还有下一个,反之则表示已经迭代到了列表的末尾。
next
方法实现了获取下一个元素的机制,方法返回一个泛型对象,并将当前索引位置加1。
remove
方法则表示该迭代器不支持从数据源中删除元素的操作。
List<Integer> list = Arrays.asList(1, 2, 3, 4);
MyIterator<Integer> it = new MyIterator<>(list);
while (it.hasNext()) {
System.out.println(it.next());
}
上述代码中,我们首先定义了一个整型列表 list
,并将它初始化为1,2,3,4四个元素,之后我们使用MyIterator
来迭代 list
中的每一个元素,并依次输出。可以看到,MyIterator
这个迭代器在这里的应用以及使用都十分简单明了。