У меня есть сценарий использования, в котором мне нужно удалить элементы из MutableList
или Iterator
во время итерации, включая элементы перед текущей позицией итератора.
Чтобы удалить текущий элемент из итератора, метод Iterator.remove()
можно использовать, но я не уверен, как удалить другие элементы из набора, который будет повторяться.
Например, если я хотел удалить элемент со значением, в два раза превышающим значениетекущий элемент и удалите текущий элемент, если он является простым.
val numbers = mutableListOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
with(numbers.iterator()) {
forEach { number ->
if (isPrime(number)) remove() // Remove current item if it is prime
if (numbers.contains(2*number)) {
/* Remove first instance of 2*number from the current iterator */
}
}
}
Как бы я это сделал в Котлине, избегая ConcurrentModificationException
?
В этом случае конечный результат должен простобыть 12
, поскольку 6 будет удалено перед проверкой.