📜  门| GATE-CS-2017(套装1)|问题 24(1)

📅  最后修改于: 2023-12-03 15:28:45.611000             🧑  作者: Mango

GATE-CS-2017(套装1)问题 24

本题描述了一个基于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这个迭代器在这里的应用以及使用都十分简单明了。