- 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.
- Advanced Splunk
- 數據科學實戰手冊(R+Python)
- Magento 1.8 Development Cookbook
- Python數據結構與算法(視頻教學版)
- Java系統化項目開發教程
- ServiceNow:Building Powerful Workflows
- ArcGIS for Desktop Cookbook
- Django 3.0應用開發詳解
- Spring技術內幕:深入解析Spring架構與設計原理(第2版)
- 3ds Max印象 電視欄目包裝動畫與特效制作
- C指針原理揭秘:基于底層實現機制
- Practical Maya Programming with Python
- 從零開始:C語言快速入門教程
- HTML5程序設計基礎教程
- MATLAB語言及編程實踐:生物數學模型應用