Java中是否有可写的迭代器?

时间:2010-05-10 12:31:35

标签: java arrays iterator mutable

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

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

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

Java中是否存在可写迭代器? 如果没有,那么取代它们的是什么?

3 个答案:

答案 0 :(得分:8)

ListIterator(您可以通过List#listIterator()获得)具有add()set()方法,允许您分别在当前迭代的索引处插入和替换项目。这是迄今为止我唯一能用Java思考的“可写迭代器”。

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

答案 1 :(得分:2)

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

PS:您可以使用ArrayList,它是一组自动增长的数组,并使用ListIterator作为Balus描述,以便使用iterator-object-approach。

答案 2 :(得分:0)

看起来更像是想要List(或者某些其他集合,例如Set)或数组。

另外,你可以让你的内容变得可变。整数看起来很愚蠢,但继续你的例子

for (MutableInteger i : CollectionOfMInts) i.setTo(42);