5

在 C+ 中,可以使用迭代器来写入序列。最简单的例子是:

vector<int> v;
for (vector<int>::iterator it = v.begin(); it!=v.end(); ++it) {
    *it = 42;
}

我需要更复杂的东西 - 将迭代器保留为类成员以备后用。但我不知道如何从 Java 迭代器中获得这种行为。

Java中有可写的迭代器吗?
如果不是,那么用什么代替它们?

4

3 回答 3

8

ListIterator您可以通过 获得List#listIterator())具有add()set()方法,它们允许您分别插入和替换当前迭代索引处的项目。这是我能想到的 Java 中唯一的“可写迭代器”。

不确定这是否是给定 C++ 代码的确切替换,因为我不知道 C++。

于 2010-05-10T12:35:14.887 回答
2

由于可以通过索引直接快速地访问数组,因此您实际上并不需要迭代器对象。将数组的索引保存在该类成员中还不够吗?这将允许读取和写入数组的值。

PS:您可以使用 ArrayList,它是一组自动增长的数组,并使用 ListIterator 如 Balus 所述,以便使用迭代器对象方法。

于 2010-05-10T12:41:19.767 回答
0

看起来更像你想要一个List(或者可能是其他一些集合,比如Set)或一个数组。

此外,您可以使您的内容可变。整数看起来很傻,但继续你的例子

for (MutableInteger i : CollectionOfMInts) i.setTo(42);
于 2010-05-10T12:43:51.073 回答