eegmak
@eegmak

Меняет ли значение foreachindexed в цикле после удаления элемента?

Использую цикл foreachindexed внутри которого удаляю элементы
вопрос: будет ли цикл перебирать элементы mutablelist по старому значению размера структуры или после удаления цикл будет длиться меньше на один элемент?
код
fun removeFlower(num: Float) {
        val currentList = flowersLiveData.value
        val updatedList = initialFlowerList.toMutableList()
        updatedList.forEachIndexed{index, name ->
            Log.d(TAG, "найдем index="+index.toString());
            val q1=updatedList[index].lfreq.size/2-1
                for (fr in 0..q1)
                {
                    if (updatedList[index].lfreq[fr]<num && updatedList[index].lfreq[fr+1]>num)
                        break
                    else
                        if(fr==q1)
                            updatedList.removeAt(index)
                }

            }

        flowersLiveData.postValue(updatedList)

    }
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
forEachIndexed это extension, сахар для for(x in list). А это уже синтаксический сахар для while(iterator.hasNext()). Дальше надо разбираться с итератором, и там возможны варианты. Самый плохой из них - это ConcurrentModificationException, то есть изменение списка, по которому сейчас происходит итерация.
Ответ - так делать вообще не надо.
По коду выглядит так, будто тебе надо просто использовать напрямую iterator() и в нужный момент вызывать у него remove(). А index здесь вообще лишний.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы