MutableList в Kotlin — объявление, функции и примеры

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] 

Оцените статью