Есть ли пирентный итератор в Java?
Вопрос
В 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);