代码之家  ›  专栏  ›  技术社区  ›  Łukasz Lew

Java中有可写迭代器吗?

  •  5
  • Łukasz Lew  · 技术社区  · 16 年前

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

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

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

    Java中有可写迭代器吗?
    如果不是,那么是什么取代了他们?

    3 回复  |  直到 16 年前
        1
  •  8
  •   BalusC    16 年前

    这个 ListIterator (你可以通过 List#listIterator() add() set() 方法,它允许您在当前迭代索引处分别插入和替换项。这是迄今为止我所能想到的唯一的“可写迭代器”。

    虽然我不知道C++,但是如果这是对C++代码的确切替换,我们不确定。

        2
  •  2
  •   Simon    16 年前

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

    ps:您可以使用arraylist,这是一组自动增长的数组,并使用balus描述的listiterator来使用iterator对象方法。

        3
  •  0
  •   Carl    16 年前

    看起来你更想 List (或者其他收藏,比如 Set )或者一个数组。

    而且,你可以让你的内容可变。整数看起来很傻,但继续你的例子

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