Как инициализировать Kotlin MutableList для удаления MutableList?

Кажется, так просто, но как я могу инициализировать Kotlin MutableList для пустого MutableList?

Я мог бы взломать его таким образом, но я уверен, что есть что-то более доступное:

var pusta: List<Kolory> = emptyList()
var cos: MutableList<Kolory> = pusta.toArrayList()

Ответ 1

Вы можете просто написать:

val mutableList = mutableListOf<Kolory>()

Это самый идиоматичный способ.

Альтернативные способы

val mutableList : MutableList<Kolory> = arrayListOf()

или же

val mutableList : MutableList<Kolory> = ArrayList()

Это использует тот факт, что java-типы, такие как ArrayList, неявно реализуют тип MutableList помощью трюка с компилятором.

Ответ 2

Различные формы в зависимости от типа List, для Array List:

val myList = mutableListOf<Kolory>() 
// or more specifically use the helper for a specific list type
val myList = arrayListOf<Kolory>()

Для LinkedList:

val myList = linkedListOf<Kolory>()
// same as
val myList: MutableList<Kolory> = linkedListOf()

Для других типов списков предполагается Mutable, если вы создаете их напрямую:

val myList = ArrayList<Kolory>()
// or
val myList = LinkedList<Kolory>()

Это справедливо для всего, что реализует интерфейс List (то есть для других библиотек коллекций).

Нет необходимости повторять тип с левой стороны, если список уже изменчив. Или только если вы хотите рассматривать их только для чтения, например:

val myList: List<Kolory> = ArrayList()

Ответ 3

Мне нравится ниже:

var book: MutableList<Books> = mutableListOf()

/** Возвращает новый [MutableList] с данными элементами. */

public fun <T> mutableListOf(vararg elements: T): MutableList<T>
    = if (elements.size == 0) ArrayList() else ArrayList(ArrayAsCollection(elements, isVarargs = true))