В Kotlin MutableList — это интерфейс, который предоставляет динамическую коллекцию элементов с изменяемыми операциями. Однако бывают случаи, когда попытка установить значение в MutableList может привести к исключению java.lang.UnsupportedOperationException. В этой статье мы рассмотрим различные методы установки значений в MutableList и предоставим примеры кода, которые помогут вам преодолеть это исключение.
- Использование метода set():
Метод set(index: Int, element: E) позволяет заменить элемент по указанному индексу заданным элементом.
val mutableList: MutableList<String> = mutableListOf("apple", "banana", "orange")
mutableList.set(1, "grape")
println(mutableList) // Output: [apple, grape, orange]
- Преобразование в изменяемый список.
Если вы работаете с неизменяемым списком и хотите изменить его элементы, вы можете преобразовать его в изменяемый список с помощью метода toMutableList().
val immutableList: List<String> = listOf("apple", "banana", "orange")
val mutableList = immutableList.toMutableList()
mutableList[1] = "grape"
println(mutableList) // Output: [apple, grape, orange]
- Использование MutableListIterator:
MutableListIterator предоставляет двунаправленный итератор, который позволяет осуществлять прямой и обратный обход MutableList. Он также предоставляет метод set(element: E) для установки значения текущего элемента.
val mutableList: MutableList<String> = mutableListOf("apple", "banana", "orange")
val iterator = mutableList.listIterator()
while (iterator.hasNext()) {
if (iterator.next() == "banana") {
iterator.set("grape")
break
}
}
println(mutableList) // Output: [apple, grape, orange]
- Расширение MutableList:
Вы можете создать собственную функцию расширения для установки значений в MutableList.
fun <E> MutableList<E>.setValue(index: Int, element: E) {
if (index in 0 until size) {
this[index] = element
}
}
val mutableList: MutableList<String> = mutableListOf("apple", "banana", "orange")
mutableList.setValue(1, "grape")
println(mutableList) // Output: [apple, grape, orange]
Используя метод set(), преобразуя его в MutableList, используя MutableListIterator или расширяя MutableList собственной функцией, вы можете успешно устанавливать значения в MutableList в Kotlin. Эти методы помогут вам избежать исключения java.lang.UnsupportedOperationException и изменить содержимое списка по желанию.