作业:使用私有迭代器类的迭代器方法
我有一个家庭作业任务,并且有一件事情我无法控制。作业:使用私有迭代器类的迭代器方法
我有一个抽象类,它包含方法。我必须创建一个继承和扩展这些方法的子类。在抽象类中有一个我不明白的方法。有人知道这段代码做什么吗?
该类中的所有其他方法对数组做不同的事情(如添加或删除特定的整数)。其他一些方法创建一个LiFo栈(push,pop,peek,希望你明白我的意思)。但是我有其他的方法没有任何问题,它只是这一次我不明白:
/*This is a method which I can use in my subclass and main method: */
public Iterator<Integer> iterator() {
return new IntIterator();
}
/*This is a private inner class used by iterator() */
class IntIterator implements Iterator<Integer> {
private int count = 0;
public Integer next() {return values[count++];}
public boolean hasNext() {return count<size;}
public void remove() {
throw new RuntimeException("remove() is not implemented");
}
}
“大小” variale代表实际的数组或堆栈大小,“价值观”是存储所有整数数组。
预先感谢您。
该代码正在创建一个简单的迭代器来迭代名为values
的数组。迭代器只是让你更容易使用集合。取而代之的是:
for (int i = 0; i < values.size; i++)
{
System.out.println(values[i]);
}
你这样做:
Iterator i = iterator();
while (i.hasNext()) {
System.out.printf(i.next());
}
这似乎并不像一个巨大的胜利,但在这里它可以当底层集合类型是不是一个数组更为复杂。
iterator
方法的目的可能提供使用for
语句所需的东西。如果你这样说
for (SomeType val : SomeObject)
那么如果SomeObject
不是一个数组,它必须有一些实现Iterable<SomeType>
[技术上,它可以为SomeType
某些子类中实现公正Iterable
或Iterable<T>
。如果一个类实现Iterable<SomeType>
,它必须有一个iterator
方法:当执行上述for
声明
public Iterator<SomeType> iterator() { ... }
,它开始通过创建一个Iterator<SomeType>
:
internalIterator = SomeObject.iterator();
的for
语句然后调用next
和在internalIterator
上的hasNext
方法依次检查每个对象,并知道何时停止循环。因此,Iterator<SomeType>
有一个next
方法,每次调用它时都会返回“下一个”值。实际上,多次调用next
会一次返回一个值为的列表。在这种情况下,Iterator<Integer>
保存到count
索引,该索引告诉它下一个要返回的值,并且其next()
方法返回下一个值。
你不明白'iterator()'方法吗?那你知道吗? –
您对您发布的代码有什么不了解?私人内部类似乎相对简单。那怎么会让你困惑? –
很高兴看到一个有礼貌,写得很好的“家庭作业”问题。 – Ivan