Удалить последнее определенное количество элементов из списка

У меня есть 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
    }

Любая помощь или совет будут высоко оценены.

Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
1 334
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Если вы просто хотите удалить последнее добавленное, вы можете использовать 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 = предыдущий размер

Другие вопросы по теме