在 C+ 中,可以使用迭代器来写入序列。最简单的例子是:
vector<int> v;
for (vector<int>::iterator it = v.begin(); it!=v.end(); ++it) {
*it = 42;
}
我需要更复杂的东西 - 将迭代器保留为类成员以备后用。但我不知道如何从 Java 迭代器中获得这种行为。
Java中有可写的迭代器吗?
如果不是,那么用什么代替它们?
(ListIterator
您可以通过 获得List#listIterator()
)具有add()
和set()
方法,它们允许您分别插入和替换当前迭代索引处的项目。这是我能想到的 Java 中唯一的“可写迭代器”。
不确定这是否是给定 C++ 代码的确切替换,因为我不知道 C++。
由于可以通过索引直接快速地访问数组,因此您实际上并不需要迭代器对象。将数组的索引保存在该类成员中还不够吗?这将允许读取和写入数组的值。
PS:您可以使用 ArrayList,它是一组自动增长的数组,并使用 ListIterator 如 Balus 所述,以便使用迭代器对象方法。
看起来更像你想要一个List
(或者可能是其他一些集合,比如Set
)或一个数组。
此外,您可以使您的内容可变。整数看起来很傻,但继续你的例子
for (MutableInteger i : CollectionOfMInts) i.setTo(42);