removeAt(0)
удаляет первый элемент из первого списка и возвращает его.arrayListOf
затем использует этот удаленный элемент для создания нового (второго) списка.
arrayone
, затем содержит: b
и c
.arraytwo
затем содержит a
.
Вместо этого вы можете использовать drop
, если вы не хотите трогать первый список и хотите только добавитьоставшиеся элементы в новом списке, например:
var arrayone: ArrayList<String> = arrayListOf("a","b","c")
val arraytwo = arrayone.drop(1)
for (item in arraytwo) {
println(item) // now prints all except the first one...
}
// arrayone contains: a, b, c
// arraytwo contains: b, c
Или используйте dropLast(1)
, если вы хотите удалить только последний элемент.Или используйте dropWhile
/ dropLastWhile
, если у вас есть условие, которое нужно применить, и отбросьте все до / до этого условия ...
Если вы действительно хотитеудалить элементы из первого и добавить только удаленные во второй список, тогда ваш текущий подход в порядке.Однако, если вы хотите удалить элементы по определенному индексу и вместо этого иметь новый список, содержащий только не удаленные, вам сначала нужно создать копию первого списка, а затем применить к этому списку removeAt
, например:
val arraytwo = arrayone.toMutableList().apply {
removeAt(0)
}
// or without the apply:
arraytwo.removeAt(0)
Или вы можете использовать filterIndexed
, чтобы решить это:
val arraytwo = arrayone.filterIndexed { index, _ ->
index != 1 // you can also specify more interesting filters here...
} // filter, map, etc. all return you a new list. If that list must be mutable again, just add a .toMutableList() at the end
Используя filterIndexed
, filter
, drop
и т. Д.убедитесь, что первый список остался нетронутым.Если вы не хотите трогать первый список в первую очередь, вы можете использовать listOf
или toList
, то есть просто List
как тип вместо этого, который не предоставляет изменяемые функции (см. Также Ссылка Kotlin относительно коллекций: список, набор, карта ).
Возможно, вас также интересует filter
/ filterNot
, а затем вскоре в minus
или аналогичных функциях для удаления ненужных элементов без индекса.