一:變量的定義
-
var變量variable
- 可變變量:賦值之后可以多次修改
-
val常量value
- 不可變變量:賦值之后不可直接修改良拼,但是對應(yīng)的get方法還是可以修改僵驰,類似java中被final修飾的常量
二:數(shù)組與集合
1疮方、數(shù)組與集合的創(chuàng)建
var array: Array<Int> = arrayOf(1, 2)
//這種方法數(shù)組元素免于裝箱控嗜,不需要轉(zhuǎn)為Integer,可以節(jié)省內(nèi)存
var arr: IntArray = intArrayOf(1,2)
var list:List<String> = listOf("a","b")
var set1: Set<String> = setOf("1", "2")
//使用to將鍵和值關(guān)聯(lián) 直接使用mapOf創(chuàng)建的map是不能修改值的但是可以通過toMutableMap轉(zhuǎn)成新的集合骡显,該方法返回的是一個新的map
//原始的map還是不可變的疆栏,對map的操作需要在toMutableMap的返回map上進行操作
var map: Map<String, Int> = mapOf("1" to 1,"2" to 2)
//使用mutableMapOf創(chuàng)建的map可以進行值的修改
var mutableMap: Map<String, Int> = mutableMapOf("a" to 1)
//將普通不可修改的map轉(zhuǎn)為可修改的map
var map1 = map.toMutableMap()
2曾掂、集合常見操作符
- forEach:遍歷
- arr1.forEach { println(it) }
- map:對集合元素進行指定操作,返回一個新的集合
- var newList = list.map { i -> i+3 }
- flatMap:每一步生成新的集合壁顶,最后將所有集合連接起來生成新的集合
- var flatMapList = arr1.flatMap { i -> listOf("${i + 1}", "a") // ??生成新集合}
- contains(元素) : 檢查集合中是否包含指定的元素珠洗,若存在則返回true,反之返回false
2.1 元素操作符
- elementAt(index) : 獲取對應(yīng)下標(biāo)的元素若专。若下標(biāo)越界险污,會拋出IndexOutOfBoundsException(下標(biāo)越界)異常,同get(index)一樣
- elementAtOrElse(index,{...}) : 獲取對應(yīng)下標(biāo)的元素富岳。若下標(biāo)越界蛔糯,返回默認值,此默認值就是你傳入的下標(biāo)的運算值
- elementAtOrNull(index) : 獲取對應(yīng)下標(biāo)的元素窖式。若下標(biāo)越界蚁飒,返回null
- first() : 獲取第一個元素,若集合為空集合萝喘,這會拋出NoSuchElementException異常
- first{} : 獲取指定元素的第一個元素淮逻。若不滿足條件,則拋出NoSuchElementException異常
- firstOrNull() : 獲取第一個元素阁簸,若集合為空集合爬早,返回null
- firstOrNull{} : 獲取指定元素的第一個元素。若不滿足條件启妹,返回null
- getOrElse(index,{...}) : 同elementAtOrElse一樣
- getOrNull(index) : 同elementAtOrNull一樣
- last() : 同first()相反
- last{} : 同first{}相反
- lastOrNull{} : 同firstOrNull()相反
- lastOrNull() : 同firstOrNull{}相反
- indexOf(元素) : 返回指定元素的下標(biāo)筛严,若不存在,則返回-1
- indexOfFirst{...} : 返回第一個滿足條件元素的下標(biāo)饶米,若不存在桨啃,則返回-1
- indexOfLast{...} : 返回最后一個滿足條件元素的下標(biāo),若不存在檬输,則返回-1
- single() : 若集合的長度等于0,則拋出NoSuchElementException異常照瘾,若等于1,則返回第一個元素丧慈。反之析命,則拋出IllegalArgumentException異常
- single{} : 找到集合中滿足條件的元素,若元素滿足條件逃默,則返回該元素鹃愤。否則會根據(jù)不同的條件,拋出異常笑旺。這個方法慎用
- singleOrNull() : 若集合的長度等于1,則返回第一個元素昼浦。否則,返回null
- singleOrNull{} : 找到集合中滿足條件的元素筒主,若元素滿足條件关噪,則返回該元素。否則返回null
- forEach{...} : 遍歷元素乌妙。一般用作元素的打印
- forEachIndexed{index,value} : 遍歷元素使兔,可獲得集合中元素的下標(biāo)。一般用作元素以及下標(biāo)的打印
- componentX() : 這個函數(shù)在前面的章節(jié)中提過多次了藤韵。用于獲取元素虐沥。其中的X只能代表1..5。詳情可看下面的例子
- println(list.component1()) // 等價于
list[0] <=> list.get(0)
- println(list.component1()) // 等價于
2.2 順序操作符
- reversed() : 反序泽艘。即和初始化的順序反過來欲险。
- sorted() : 自然升序。
- sortedBy{} : 根據(jù)條件升序匹涮,即把不滿足條件的放在前面天试,滿足條件的放在后面
- sortedDescending() : 自然降序。
- sortedByDescending{} : 根據(jù)條件降序然低。和sortedBy{}相反
2.3 映射操作符
- map{...} : 把每個元素按照特定的方法進行轉(zhuǎn)換喜每,組成一個新的集合。
- mapNotNull{...} : 同map{}函數(shù)的作用相同雳攘,只是過濾掉轉(zhuǎn)換之后為null的元素
- mapIndexed{index,result} : 把每個元素按照特定的方法進行轉(zhuǎn)換带兜,只是其可以操作元素的下標(biāo)(index),組成一個新的集合吨灭。
- mapIndexedNotNull{index,result} : 同mapIndexed{}函數(shù)的作用相同刚照,只是過濾掉轉(zhuǎn)換之后為null的元素
- flatMap{...} : 根據(jù)條件合并兩個集合,組成一個新的集合喧兄。
- groupBy{...} : 分組涩咖。即根據(jù)條件把集合拆分為為一個Map<K,List<T>>類型的集合。具體看實例
2.4 過濾操作符
- filter{...} : 把不滿足條件的元素過濾掉
- filterIndexed{...} : 和filter{}函數(shù)作用類似繁莹,只是可以操作集合中元素的下標(biāo)(index)
- filterNot{...} : 和filter{}函數(shù)的作用相反
- filterNotNull() : 過濾掉集合中為null的元素檩互。
- take(num) : 返回集合中前num個元素組成的集合
- takeWhile{...} : 循環(huán)遍歷集合,從第一個元素開始遍歷集合咨演,當(dāng)?shù)谝粋€出現(xiàn)不滿足條件元素的時候闸昨,退出遍歷。然后把滿足條件所有元素組成的集合返回薄风。
- takeLast(num) : 返回集合中后num個元素組成的集合
- takeLastWhile{...} : 循環(huán)遍歷集合饵较,從最后一個元素開始遍歷集合,當(dāng)?shù)谝粋€出現(xiàn)不滿足條件元素的時候遭赂,退出遍歷循诉。然后把滿足條件所有元素組成的集合返回。
- drop(num) : 過濾集合中前num個元素
- dropWhile{...} : 相同條件下撇他,和執(zhí)行takeWhile{...}函數(shù)后得到的結(jié)果相反
- dropLast(num) : 過濾集合中后num個元素
- dropLastWhile{...} : 相同條件下茄猫,和執(zhí)行takeLastWhile{...}函數(shù)后得到的結(jié)果相反
- distinct() : 去除重復(fù)元素
- println(list3.distinct())
- distinctBy{...} : 根據(jù)操作元素后的結(jié)果去除重復(fù)元素
- println(list3.distinctBy { it + 2 })
- slice : 過濾掉所有不滿足執(zhí)行下標(biāo)的元素狈蚤。
- println(list1.slice(listOf(1,3,5,7)))
2.5 生產(chǎn)操作符
- plus() : 合并兩個集合中的元素,組成一個新的集合划纽。也可以使用符號+
- zip : 由兩個集合按照相同的下標(biāo)組成一個新集合脆侮。該新集合的類型是:List<Pair>
- unzip : 和zip的作用相反。把一個類型為List<Pair>的集合拆分為兩個集合勇劣【副埽看下面的例子
- partition : 判斷元素是否滿足條件把集合拆分為有兩個Pair組成的新集合。
2.6 統(tǒng)計操作符
- any() : 判斷是不是一個集合比默,若是幻捏,則在判斷集合是否為空,若為空則返回false,反之返回true,若不是集合命咐,則返回hasNext
- any{...} : 判斷集合中是否存在滿足條件的元素篡九。若存在則返回true,反之返回false
- all{...} : 判斷集合中的所有元素是否都滿足條件。若是則返回true,反之則返回false
- none() : 和any()函數(shù)的作用相反
- none{...} : 和all{...}函數(shù)的作用相反
- max() : 獲取集合中最大的元素侈百,若為空元素集合瓮下,則返回null
- maxBy{...} : 獲取方法處理后返回結(jié)果最大值對應(yīng)那個元素的初始值,如果沒有則返回null
- min() : 獲取集合中最小的元素钝域,若為空元素集合讽坏,則返回null![collection.jpg](https://upload-
- minBy{...} : 獲取方法處理后返回結(jié)果最小值對應(yīng)那個元素的初始值,如果沒有則返回null
- sum() : 計算出集合元素累加的結(jié)果例证。
- sumBy{...} : 根據(jù)元素運算操作后的結(jié)果路呜,然后根據(jù)這個結(jié)果計算出累加的值。
- sumByDouble{...} : 和sumBy{}相似织咧,不過sumBy{}是操作Int類型數(shù)據(jù)伐割,而sumByDouble{}操作的是Double類型數(shù)據(jù)
- average() : 獲取平均數(shù)
- reduce{...} : 從集合中的第一項到最后一項的累計操作痘括。
- reduceIndexed{...} : 和reduce{}作用相同,只是其可以操作元素的下標(biāo)(index)
- reduceRight{...} : 從集合中的最后一項到第一項的累計操作。
- reduceRightIndexed{...} : 和reduceRight{}作用相同粱玲,只是其可以操作元素的下標(biāo)(index)
- fold{...} : 和reduce{}類似上忍,但是fold{}有一個初始值
- foldIndexed{...} : 和reduceIndexed{}類似怒见,但是foldIndexed{}有一個初始值
- foldRight{...} : 和reduceRight{}類似杆查,但是foldRight{}有一個初始值
-
foldRightIndexed{...} : 和reduceRightIndexed{}類似,但是foldRightIndexed{}有一個初始值