在C +中,可以使用迭代器来写入序列。最简单的例子是:
vector<int> v;
for (vector<int>::iterator it = v.begin(); it!=v.end(); ++it) {
*it = 42;
}
我需要更复杂的东西 - 将迭代器保留为类成员以供以后使用。 但我不知道如何从Java迭代器中获得这种行为。
Java中是否存在可写迭代器? 如果没有,那么取代它们的是什么?
答案 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);