Kotlin MutableList — это интерфейс и общий набор элементов. Интерфейс MutableList является изменяемым по своей природе, он наследует класс Collection<T> в Kotlin. Методы интерфейса MutableList поддерживают функции чтения и записи. После того, как элементы в MutableList объявлены, в него можно добавить или удалить другие элементы, поэтому он не имеет фиксированной длины.
Чтобы использовать интерфейс MutableList, мы используем его функцию, называемую mutableListOf() или mutableListOf<E>().
Элементы MutableList следуют порядку вставки и содержат порядковый номер, такой же, как массив.
Объявление интерфейса MutableList
interface MutableList : List, MutableCollection(source)
Функции MutableList
В интерфейсе MutableList доступно несколько методов. Некоторые методы интерфейса MutableList упомянуты ниже.
| Функция | Описание |
|---|---|
| abstract fun add(element: E): Boolean | Добавляет данный элемент в коллекцию. |
| abstract fun add(index: Int, element: E) | Добавляется элемент по указанному индексу. |
| abstract fun addAll(elements: Collection<E>): Boolean | Она добавляет все элементы данной коллекции в текущую коллекцию. |
| abstract fun clear() | Удаляет все элементы из этой коллекции. |
| abstract fun listIterator(): MutableListIterator<E> | Возвращает итератор списка по элементам в правильной последовательности в текущем списке. |
| abstract fun listIterator(index: Int): MutableListIterator<E> | Она возвращает итератор списка, начиная с указанного индекса, по элементам в списке в правильной последовательности. |
| abstract fun remove(element: E): Boolean | Удаляет указанный элемент, если он присутствует в текущей коллекции. |
| abstract fun removeAll(elements: Collection<E>): Boolean | Удаляются все элементы из текущего списка, которые также присутствуют в указанной коллекции. |
| abstract fun removeAt(index: Int): E | Удаляет элемент с заданным индексом из списка. |
| abstract fun retainAll(elements: Collection<E>): Boolean | Сохраняет все элементы в текущей коллекции, которые присутствуют в данной коллекции. |
| abstract operator fun set(index: Int, element: E): E | Оан заменяет элемент и добавляет новый по заданному индексу с указанным элементом. |
| abstract fun subList( fromIndex: Int, toIndex: Int ): MutableList<E> |
Возвращает часть списка из указанного fromIndex (включительно) в toIndex (исключительно) из текущего списка. Возвращаемый список поддерживается текущим списком, поэтому неструктурные изменения в возвращаемом списке отражаются в текущем списке и наоборот. |
Пример 1
Давайте посмотрим на пример MutableList с использованием функции mutableListOf() и пройдемся по его элементам.
fun main(args: Array){
var mutableList = mutableListOf("Ajay","Vijay","Prakash","Vijay")
for(element in mutableList){
println(element)
}
println()
for(index in 0..mutableList.size-1){
println(mutableList[index])
}
}
Выход:
Ajay Vijay Prakash Vijay Ajay Vijay Prakash Vijay
Пример 2
Функция mutableListOf() интерфейса MutableList предоставляет средства для добавления элементов после его объявления. MutableList также можно объявить пустым и добавить элементы позже, но в этой ситуации нам нужно определить его общий тип. Например:
fun main(args: Array){
var mutableList1 = mutableListOf("Ajay","Vijay")
mutableList1.add("Prakash")
mutableList1.add("Vijay")
var mutableList2 = mutableListOf()
mutableList2.add("Ajeet")
mutableList2.add("Amit")
mutableList2.add("Akash")
for(element in mutableList1){
println(element)
}
println()
for(element in mutableList2){
println(element)
}
}
Выход:
Ajay Vijay Prakash Vijay Ajeet Amit Akash
Пример 3
Для большей конкретики мы можем предоставить общие типы интерфейса MutableList, такие как mutableListOf<Int>(), mutableListOf<String>(), mutableListOf<Any>(). mutableListOf<Int>() принимает только целочисленное значение, mutableListOf<String>() принимает только строковое значение, а mutableListOf<Any>() одновременно принимает значения разных типов данных. Давайте посмотрим пример.
fun main(args: Array){
var mutableListInt: MutableList = mutableListOf()
var mutableListString: MutableList = mutableListOf()
var mutableListAny: MutableList = mutableListOf()
mutableListInt.add(5)
mutableListInt.add(7)
mutableListInt.add(10)
mutableListInt.add(2,15) //add element 15 at index 2
mutableListString.add("Ajeet")
mutableListString.add("Ashu")
mutableListString.add("Mohan")
mutableListAny.add("Sunil")
mutableListAny.add(2)
mutableListAny.add(5)
mutableListAny.add("Raj")
println(".....print Int type.....")
for(element in mutableListInt){
println(element)
}
println()
println(".....print String type.....")
for(element in mutableListString){
println(element)
}
println()
println(".....print Any type.....")
for(element in mutableListAny){
println(element)
}
}
Выход:
.....print Int type..... 5 7 15 10 .....print String type..... Ajeet Ashu Mohan .....print Any type..... Sunil 2 5 Raj
Пример 4
Давайте посмотрим на использование различных функций интерфейса MutableList, используя функцию mutableListOf<T>().
fun main(args: Array){
var mutableList = mutableListOf()
mutableList.add("Ajay") // index 0
mutableList.add("Vijay") // index 1
mutableList.add("Prakash") // index 2
var mutableList2 = mutableListOf("Rohan","Raj")
var mutableList3 = mutableListOf("Dharmesh","Umesh")
var mutableList4 = mutableListOf("Ajay","Dharmesh","Ashu")
println(".....mutableList.....")
for(element in mutableList){
println(element)
}
println(".....mutableList[2].....")
println(mutableList[2])
mutableList.add(2,"Rohan")
println("......mutableList.add(2,\"Rohan\")......")
for(element in mutableList){
println(element)
}
mutableList.add("Ashu")
println(".....mutableList.add(\"Ashu\")......")
for(element in mutableList){
println(element)
}
mutableList.addAll(1,mutableList3)
println("... mutableList.addAll(1,mutableList3)....")
for(element in mutableList){
println(element)
}
mutableList.addAll(mutableList2)
println("...mutableList.addAll(mutableList2)....")
for(element in mutableList){
println(element)
}
mutableList.remove("Vijay")
println("...mutableList.remove(\"Vijay\")....")
for(element in mutableList){
println(element)
}
mutableList.removeAt(2)
println("....mutableList.removeAt(2)....")
for(element in mutableList){
println(element)
}
mutableList.removeAll(mutableList2)
println(".... mutableList.removeAll(mutableList2)....")
for(element in mutableList){
println(element)
}
println("....mutableList.set(2,\"Ashok\")....")
mutableList.set(2,"Ashok")
for(element in mutableList){
println(element)
}
println(".... mutableList.retainAll(mutableList4)....")
mutableList.retainAll(mutableList4)
for(element in mutableList){
println(element)
}
println(".... mutableList2.clear()....")
mutableList2.clear()
for(element in mutableList2){
println(element)
}
println(".... mutableList2 after mutableList2.clear()....")
println(mutableList2)
println("....mutableList.subList(1,2)....")
println(mutableList.subList(1,2))
}
Выход:
.....mutableList.....
Ajay
Vijay
Prakash
.....mutableList[2].....
Prakash
......mutableList.add(2,"Rohan")......
Ajay
Vijay
Rohan
Prakash
.....mutableList.add("Ashu")......
Ajay
Vijay
Rohan
Prakash
Ashu
... mutableList.addAll(1,mutableList3)....
Ajay
Dharmesh
Umesh
Vijay
Rohan
Prakash
Ashu
...mutableList.addAll(mutableList2)....
Ajay
Dharmesh
Umesh
Vijay
Rohan
Prakash
Ashu
Rohan
Raj
...mutableList.remove("Vijay")....
Ajay
Dharmesh
Umesh
Rohan
Prakash
Ashu
Rohan
Raj
....mutableList.removeAt(2)....
Ajay
Dharmesh
Rohan
Prakash
Ashu
Rohan
Raj
.... mutableList.removeAll(mutableList2)....
Ajay
Dharmesh
Prakash
Ashu
....mutableList.set(2,"Ashok")....
Ajay
Dharmesh
Ashok
Ashu
.... mutableList.retainAll(mutableList4)....
Ajay
Dharmesh
Ashu
.... mutableList2.clear()....
.... mutableList2 after mutableList2.clear()....
[]
....mutableList.subList(1,2)....
[Dharmesh]
