У меня есть ArrayList
значений, которые я добавляю в зависимости от определенных условий. У меня есть Button
с именем back
, функция которого состоит в том, чтобы удалить последние добавленные элементы из ArrayList
. Я отслеживаю, сколько элементов было добавлено с помощью переменной counter
.
Итак, у меня есть эта скелетная функция, где itemList
— это список, из которого я хочу удалить элементы, а howManyElementsToRemove
— это количество (counter
) элементов, которые я хочу удалить из проанализированного списка. Я просмотрел варианты функций, которые я получаю при использовании itemList.remove()
, но я не знаю, какой из них будет лучшим вариантом.
private fun removeElements(itemList: ArrayList<Int>, howManyElementsToRemove: Int){
//I am not sure how to approach this
}
Любая помощь или совет будут высоко оценены.
Если вы просто хотите удалить последнее добавленное, вы можете использовать removeLast()
или removeLastOrNull()
Например:
val itemList = arrayListOf(1, 2, 3, 4, 5, 6, 7, 8)
val howManyElementsToRemove = 3
repeat(howManyElementsToRemove){itemList.removeLastOrNull()}
print(itemList)
//[1, 2, 3, 4, 5]
если вы используете removeLast()
с howManyElementsToRemove
, когда размер больше, чем размер itemList
, вы можете получить NoSuchElementException("List is empty.")
Простого цикла for (или повтора) должно быть достаточно:
private fun removeElements(list: ArrayList<Int>, numberOfRemovals: Int){
for(count in 0 until numberOfRemovals){
list.removeLast() //Or as Ben Shmuel mentioned, removeLastOrNull()
}
}
Мы можем проверить это, используя ввод:
val primes = arrayListOf(2, 3, 5, 7, 11, 13, 17, 23)
val numberOfRemovals = 3
removeElements(primes, numberOfRemovals)
println(primes)
Результат:
[2, 3, 5, 7, 11]
Если вы каждый раз отслеживаете размер списка, то лучший вариант:
itemList.subList(prevSize, curSize).clear()
где curSize = текущий размер списка и prevSize = предыдущий размер