- Functional Kotlin
- Mario Arias Rivu Chakraborty
- 298字
- 2021-06-24 19:15:29
Immutable collections
Kotlin gives preference to immutability wherever possible, but leaves the choice to the developer whether or when to use it. This power of choice makes the language even more powerful. Unlike most languages, where they have either only mutable (like Java, C#, and so on) or only immutable collections (like F#, Haskell, Clojure, and so on), Kotlin has both and distinguishes between them, leaving the developer with the freedom to choose whether to use an immutable or mutable one.
Kotlin has two interfaces for collection objects—Collection<out E> and MutableCollection<out E>; all the collection classes (for example, List, Set, or Map) implement either of them. As the name suggests, the two interfaces are designed to serve immutable and mutable collections respectively. Let us have an example:
fun main(args: Array<String>) { val immutableList = listOf(1,2,3,4,5,6,7)//(1) println("Immutable List $immutableList") val mutableList:MutableList<Int> = immutableList.toMutableList()//(2) println("Mutable List $mutableList") mutableList.add(8)//(3) println("Mutable List after add $mutableList") println("Mutable List after add $immutableList") }
The output is as follows:

So, in this program, we created an immutable list with the help of the listOf method of Kotlin, on comment (1). The listOf method creates an immutable list with the elements (varargs) passed to it. This method also has a generic type parameter, which can be skipped if the elements array is not empty. The listOf method also has a mutable version—mutableListOf() which is identical except that it returns MutableList instead. We can convert an immutable list to a mutable one with the help of the toMutableList() extension function, we did the same in comment (2), to add an element to it on comment (3). However, if you check the output, the original Immutable List remains the same without any changes, the item is, however, added to the newly created MutableList instead.
- Animate CC二維動畫設計與制作(微課版)
- 精通API架構:設計、運維與演進
- Expert Android Programming
- Learning Data Mining with R
- C#應用程序設計教程
- UVM實戰
- NetBeans IDE 8 Cookbook
- 劍指大數據:企業級數據倉庫項目實戰(在線教育版)
- Learning YARN
- Mastering C++ Multithreading
- Flowable流程引擎實戰
- Java Web從入門到精通(第3版)
- Python網絡爬蟲技術與應用
- PHP與MySQL權威指南
- Implementing Microsoft Dynamics NAV(Third Edition)