dir.by  
  Поиск  
Компьютер, программы
Kotlin
 Списки в Kotlin. interface List , interface MutableList , class ArrayList 
посмотрели 1359 раз
обновлено: 15 августа 2026
interface List
 
interface List это список с функциями чтобы только посмотреть элементы и нельзя добавлять, удалять элементы
  Kotlin     Пример
class Car (val name:String, val price:Int)
{
}

...

// Создаем List
val allCars:List<Car> = listOf(
     Car("Audi A6", 50000),
     Car("Toyota Camry", 25000),
     Car("Honda Accord", 40000)
)

// Находим машины, цена которых > 20000
val foundItems = allCars.filter { elem ->
     elem.price>20000
}

// Проходим по всем элементам
foundItems.forEach { elem ->
     // показываем car name и car price на экране
     println("${elem.name} ${elem.price}")
}
interface MutableList
 
В MutableList можно изменять список т.е. добавлять элементы, удалять элементы польльзуясь функциями add, remove

На заметку!
List имеет фиксированный размер, поэтому в них нельзя добавлять или удалять элементы.
это список с функциями чтобы посмотреть элементы и можно добавлять, удалять элементы
  Kotlin     Пример
class Car (val name:String, val price:Int)
{
}

...

// Создаем MutableList
val allCars:MutableList<Car> = mutableListOf(
     Car("Audi A6", 50000),
     Car("Toyota Camry", 25000),
     Car("Honda Accord", 40000)
)

allCars.add( Car("Kia Sorento", 32000) )
allCars.add( Car("Hyundai Tucson", 34000) )

allCars.removeIf{elem ->
     elem.name=="Honda Accord"
}

// Находим машины, цена которых > 20000
val foundItems = allCars.filter { elem ->
     elem.price>20000
}

// Проходим по всем элементам
foundItems.forEach { elem ->
     // показываем car name и car price на экране
     println("${elem.name} ${elem.price}")
}
class ArrayList

class ArrayList это имплементация для interface MutableList.
 
На заметку!
Все функции в ArrayList и MutableList такие же.
  Создание ArrayList немного отличается от MutableList:
 
  Kotlin     Способ 1
val allCars:ArrayList<Car> = arrayListOf(
     Car("Audi A6", 50000),
     Car("Toyota Camry", 25000),
     Car("Honda Accord", 40000)
)


  Kotlin     Способ 2
val allCars:ArrayList<Car> = ArrayList<Car>(
     listOf(
          Car("Audi A6", 50000),
          Car("Toyota Camry", 25000),
          Car("Honda Accord", 40000)
     )
)


  После создания ArrayList вызываем функции MutableList.
interface MutableList
Это список с функциями добавления, удаления, поиска, сортировки элементов.
создаем
mutableListOf(7, 35, 14)
функция создает список и внутри 3 элемента
На заметку! Любое количество элементов можно писать при создании
  Kotlin     Пример 1
val myList1:MutableList<Int> = mutableListOf(7, 35, 14)
// myList1 = 7, 35, 14


  Kotlin     Пример 2
val myList1:MutableList<Int> = mutableListOf(10, 20, 30, 40, 50, 60)
// myList1 = 10, 20, 30, 40, 50, 60
mutableListOf()
функция создает пустой список
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf()
// myList1 = 0 элементов
количество элементов
size
Поле содержит количество элементов
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14)

val n:Int = myList1.size
// n = 3
isEmpty()
Функция возвращает true если список пустой
  Kotlin     Пример 1
val myList1:MutableList<Int> = mutableListOf()

val myListEmpty:Boolean = myList1.isEmpty()
// myListEmpty = true


  Kotlin     Пример 2
val myList1:MutableList<Int> = mutableListOf(7, 35, 14)

val myListEmpty:Boolean = myList1.isEmpty()
// myListEmpty = false
Преобразование коллекции в
map{элемент -> Объект нового типа}
Преобразуем коллекцию в элементы другого типа
  Kotlin     Пример

class Car (val name:String, val price:Int)
{
}

class Book (val author:String)
{
}

...

val allCars:MutableList<Car> = mutableListOf(
     Car("Audi A6", 50000),
     Car("Toyota Camry", 25000),
     Car("Honda Accord", 40000)
)

// Преобразуем коллекцию из элементов Car в элементы Book
val convertedItems:List<Book> = allCars.map {elem -> Book(elem.name) }

Функции: toList()   toSet()   toMutableList()   toSortedSet()   toTypedArray()
посмотреть элементы, поиск элементов
get(index)
Выбираем элемент по позиции
index это позиция, начинающаяся с 0
 
 
 
 
Можно так:
[index]
  Kotlin     Пример 1
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9)

val element = myList1.get(2)
// element = 14


  Kotlin     Пример 2
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9)

val element = myList1[2]
// element = 14
find{элемент -> Условия}
Поиск одного элемента по условиям
Функция возвращает элемент
Если не найдено вернет null
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9)

val foundValue = myList1.find{ value -> value==14 || value==7 }
// foundValue = 7

val foundValue = myList1.find{ value -> value==97 }
// foundValue = null
filter{элемент -> Условия}
Выбираем элементы по условию.
Новый список будет создан.
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9)

// Выбираем элементы, где значения больше 10
val myList2 = myList1.filter { value -> value>10 }
// myList2 = 35, 14     это новый список
// myList1 = 7, 35, 14, 9     старый список не поменялся
subList(indexStart, indexEnd)
Выбираем элементы с начальной по конечную позиции.
Новый список будет создан.
На заметку! В конечной позиции не берется элемент.
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9, 82)

// Выбираем элементы, с 1 по 3 позиции
val myList2 = myList1.subList(1, 3)
// myList2 = 35, 14     это новый список
// myList1 = 7, 35, 14, 9, 82     старый список не поменялся
forEach{элемент -> действие}
Проходим по всем элементам.
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9)

myList1.forEach { value ->
     // выводим значение на экран
     println(value)
}
Другие функции: single()   elementAtOrElse()   elementAtOrNull()   first()   firstOrElse()   firstOrNull()   take()
заменить элемент
set(index, элемент)
заменить элемент в позиции на указанный элемент
index это позиция
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9)

// по позиции 2 поставим число 130
myList1.set(2, 26)
// myList1 = 7,         35,         130,               9
//         index=0     index=1   index=2     index=3
Другие функции: fill()
добавление элементов
add(элемент)
добавление одного элемента в конец
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35)

myList1.add(10)
// myList1 = 7, 35, 10
addAll(array)
добавление массива элементов в конец

addAll(collection)
добавление коллекции элементов в конец
  Kotlin     Пример 1
val myList1:MutableList<Int> = mutableListOf(7, 35)

val values:Array<Int> = arrayOf(210, 160, 14)
myList1.addAll(values)
// myList1 = 7, 35, 210, 160, 14


  Kotlin     Пример 2
val myList1:MutableList<Int> = mutableListOf(7, 35)

val myList2:Collection<Int> = listOf(400,300,200)
myList1.addAll(myList2)
// myList1 = 7, 35, 400, 300, 200

add(index, элемент)
добавление одного элемента в заданной позиции
index это позиция
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9)

// по позиции 2 добавляем число 26
myList1.add(2, 26)
// myList1 = 7,         35,         26,             14,            9
//          index=0    index=1   index=2     index=3    index=4
addAll(index, collection)
добавление коллекции элементов в указанной позиции
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(10, 20, 30)

val values:Collection<Int> = listOf(500,600)
myList1.addAll(1, values)
// myList1 = 10, 500, 600, 20, 30
Другие функции: addFirst()   addLast()   plus()
удаление элементов
remove(элемент)
удаление одного элемента, даже если элемент дублируется
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 7, 21)

val isDeleted = myList1.remove(7)
// isDeleted = true
//myList1 = 35, 14, 7, 21
removeAt(index)
Удаление по индексу
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9)

val element = myList1.removeAt(1)
// element = 35
// myList1 = 7, 14, 9
removeAll(collection)
удалять только те элементы, которые совпадают с коллекцией
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(10, 20, 30)

val values:Collection<Int> = listOf(10, 30)
myList1.removeAll(values)
// myList1 = 20
retainAll(collection)
Удалить все элементы, но сохранить только те, которые совпадают с коллекцией
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(10, 20, 30)

val values:Collection<Int> = listOf(10, 30)
myList1.retainAll(values)
// myList1 = 10, 30
clear()
Удаление всех элементов
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9)

val element = myList1.clear()
// myList1 = 0 элементов
Другие функции: removeFirst()   removeFirstOrNull()   removeLast()   removeLastOrNull()   removeIf()
сортировка, фильтрация(выборка элементов по условию), группировка и другие алгоритмы
sortBy{элемент -> поле для сортировки}
Сортировка всех элементов
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9)

// сортировка по возрастанию
myList1.sortBy { value -> value }
// myList1 = 7, 9, 14, 35

// сортировка по убыванию
myList1.sortBy { value -> -value }
// myList1 = 35, 14, 9, 7
filter{элемент -> Условия}
Выбираем элементы по условию.
Новый список будет создан.
  Kotlin     Пример
val myList1:MutableList<Int> = mutableListOf(7, 35, 14, 9)

// Выбираем элементы, где значения больше 10
val myList2 = myList1.filter { value -> value>10 }
// myList2 = 35, 14     это новый список
// myList1 = 7, 35, 14, 9     старый список не поменялся
Другие функции: binarySearch   drop   subList()   retainAll{ }   replaceAll{ }   groupBy{ }   fold()   max()   min()   intersect()   slice()   sum()   average()   zip()   sortWith()   asReversed()   reverse()   reversed()   shuffle()   associateBy{ }   associateWith{ }   average()   chunked()   distinct()   random()   partition{ }
Проверка коллекции
Функции: contains()   containsAll()   all()   any()
Исходный код ...
interface List
github.com ...
interface List<out E> : Collection<E> {

     override val size: Int
     override fun isEmpty(): Boolean
     override fun contains(element: @UnsafeVariance E): Boolean
     override fun iterator(): Iterator<E>
     override fun containsAll(elements: Collection<@UnsafeVariance E>): Boolean

     public operator fun get(index: Int): E

     public fun indexOf(element: @UnsafeVariance E): Int

     public fun lastIndexOf(element: @UnsafeVariance E): Int

     public fun listIterator(): ListIterator<E>

     public fun listIterator(index: Int): ListIterator<E>

     public fun subList(fromIndex: Int, toIndex: Int): List<E>
}
interface MutableList
github.com ...
  interface MutableList наследуется от interface List
  Тоесть interface MutableList содержит свои функции и функции от interface List
interface MutableList<E> : List<E>, MutableCollection<E> {

     override fun add(element: E): Boolean
     override fun remove(element: E): Boolean
     override fun addAll(elements: Collection<E>): Boolean

     public fun addAll(index: Int, elements: Collection<E>): Boolean

     override fun removeAll(elements: Collection<E>): Boolean
     override fun retainAll(elements: Collection<E>): Boolean
     override fun clear(): Unit

     public operator fun set(index: Int, element: E): E

     public fun add(index: Int, element: E): Unit
     public fun removeAt(index: Int): E

     override fun listIterator(): MutableListIterator<E>
     override fun listIterator(index: Int): MutableListIterator<E>

     override fun subList(fromIndex: Int, toIndex: Int): MutableList<E>
}
class ArrayList
github.com ...
  class ArrayList это имплементация interface MutableList
class ArrayList<E> : MutableList<E>, RandomAccess {

     public constructor()
     public constructor(initialCapacity: Int)
     public constructor(elements: Collection<E>)

     public fun trimToSize()
     public fun ensureCapacity(minCapacity: Int)

     // From List
     override val size: Int
     override fun isEmpty(): Boolean
     override fun contains(element: E): Boolean
     override fun containsAll(elements: Collection<E>): Boolean
     override operator fun get(index: Int): E
     override fun indexOf(element: E): Int
     override fun lastIndexOf(element: E): Int

     // From MutableCollection
     override fun iterator(): MutableIterator<E>

     // From MutableList
     override fun add(element: E): Boolean
     override fun remove(element: E): Boolean
     override fun addAll(elements: Collection<E>): Boolean
     override fun addAll(index: Int, elements: Collection<E>): Boolean
     override fun removeAll(elements: Collection<E>): Boolean
     override fun retainAll(elements: Collection<E>): Boolean
     override fun clear()
     override operator fun set(index: Int, element: E): E
     override fun add(index: Int, element: E)
     override fun removeAt(index: Int): E
     override fun listIterator(): MutableListIterator<E>
     override fun listIterator(index: Int): MutableListIterator<E>
     override fun subList(fromIndex: Int, toIndex: Int): MutableList<E>
}
Зачем создавать ArrayList ?
 
Ответ:
Общее правило, всегда следует отдавать предпочтение интерфейсу.
Поэтому следует использовать interface MutableList.
 
На заметку!
class ArrayList имеет 3 конструктора и 2 метода которых нет в interface MutableList:
  Kotlin  
public class ArrayList<E> : MutableList<E>, RandomAccess {

     public constructor()
     public constructor(initialCapacity: Int)
     public constructor(elements: Collection<E>)

     public fun trimToSize()
     public fun ensureCapacity(minCapacity: Int)
     ...
}
Если по какой то причине нужно использовать функции trimToSize() или ensureCapacity(...) то тогда нужно создавать ArrayList.
 
← Предыдущая тема
Коллекции это списки, словари и другие классы для добавления, удаления элементов, поиска элементов, сортировки элементов. | Kotlin
 
Следующая тема →
Создаем коллекции list, set, map и массив array в Kotlin
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

 
Что такое Kotlin ?
Почему самой популярной средой разработки для Kotlin является IntelliJ IDEA?
Скачать и установить IntelliJ IDEA для изучения Kotlin
Создание нового консольного проекта для изучения Kotlin | IntelliJ IDEA
Устанавливаем значение
Объявлем переменную и устанавливаем значение в Kotlin | val, var, lateinit, константа: const val, глобальная переменная: companion object
null
null значение используем символ ? и ?. и !! и ?: и !!. и ?. в Kotlin
Int, Float, Boolean, Char ...
Целые числа в Kotlin: Byte, UByte, Short, UShort, Int, UInt, Long, ULong
Десятичные числа в Kotlin: Float, Double
Флаг со значениями true или false в Kotlin это: Boolean
Символ в Kotlin это: Char
Конвертация числа в текст на языке Kotlin | Int → String
String
Строка, текст в Kotlin это: String
Интерполяция строк в Kotlin. Пример: val address:String = "${street}, ${country}"
В чем отличие String и StringBuilder ?
Enum
Что такое перечисление (enum) в Kotlin ?
Как найти enum по значению в Kotlin ?
Коллекции и массивы
Коллекции это списки, словари и другие классы для добавления, удаления элементов, поиска элементов, сортировки элементов. | Kotlin
Списки в Kotlin. interface List , interface MutableList , class ArrayList
Создаем коллекции list, set, map и массив array в Kotlin
Функция
fun() { ... } - это функция в Kotlin. Функция нужна чтобы выполнить действие.
Функция расширения
Функция расширения в Kotlin. Позволяет добавить новую функцию в класс системный (List, ..) или мой (Book, ...)
Лямбда функция
Лямбда функция в Kotlin. Пример1: var myFunc1 : (a:Int, b:Int) -> Int = { p1, p2 -> p1 + p2 };
Class
Что такое class в Kotlin? Пример: class MyBook { ... } | первичный и вторичный конструктор | блок init
lateinit это поздняя инициализация для поля class | Kotlin
class, который наследует от интерфейса в Kotlin | Пример: class MyBook : IBook { ...}
Безымянный class, который наследует от интерфейса в Kotlin | Пример: val book1 = object : IBook { ...}
Общий, template class в Kotlin | Пример: class MyBook[<]T[>] { ... }
Flow
flow - это поток данных в Kotlin. Это замена LiveData в Android Kotlin и замена Observable в RxJava
Пишем программу
Консольное Kotlin приложение работает как Android Jetpack Compose

  Ваши вопросы присылайте по почте: info@dir.by