官术网_书友最值得收藏!

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.

主站蜘蛛池模板: 永嘉县| 丰宁| 清新县| 夏邑县| 武清区| 翁源县| 晋中市| 金昌市| 龙山县| 龙山县| 玉屏| 武胜县| 枣庄市| 遂昌县| 武川县| 怀来县| 威信县| 会昌县| 三原县| 七台河市| 新宾| 常山县| 泰州市| 增城市| 贵阳市| 新民市| 雷州市| 英吉沙县| 桐城市| 通城县| 墨脱县| 南皮县| 和龙市| 渝中区| 周至县| 姚安县| 庆阳市| 石嘴山市| 霍邱县| 五莲县| 邵东县|