Вопрос

В 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, который является автоматически растущим набором массивов и использовать Listererator в качестве Balus, описанного для использования подхода итератора-объекта.

Выглядит больше, как вы хотите List (или, может быть, какая-то другая коллекция, как Set) или массив.

Кроме того, вы могли бы просто сделать ваше содержимое Misable. Это выглядит глупо для целых чисел, но продолжая ваш пример

for (MutableInteger i : CollectionOfMInts) i.setTo(42);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top