集合list
val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape")for (fruit in list) {
println(fruit)
}
注意:在這里使用 listOf()函數(shù)創(chuàng)建的是一個(gè)不可變的集合。在 Java 中沒有不可變的集合腊尚,但是在 Kotlin 中不可變的集合指的是,該集合中的元素只能用于讀取,不能進(jìn)行添加痪宰、修改或者刪除行疏。
這么設(shè)計(jì)的理由和 val匆光、類默認(rèn)不可繼承是一樣的,可見 Kotlin 在不可變性方面的控制及其嚴(yán)格酿联。那么如果我們確實(shí)需要?jiǎng)?chuàng)建一個(gè)可變的集合终息,可以使用mutableListOf()函數(shù)即可。
val set = setOf("Apple", "Banana", "Orange", "Pear", "Grape")for (fruit in set) {
println(fruit)
}
println("==========================")
val mutableSet = mutableSetOf("Apple", "Banana", "Orange", "Pear", "Grape")
mutableSet.add("Watermelon")for (fruit in mutableSet) {
println(fruit)
}
- List 集合的用法其實(shí)和 Set 一模一樣贞让,只需要將創(chuàng)建集合的方法換成 setOf()和 mutableSetOf() 即可周崭。
集合Map
- Map 和前面的 List 和 Set 有很大的不同,傳統(tǒng)的 Map 用法是先創(chuàng)建一個(gè) HashMap 的實(shí)例喳张,然后將一個(gè)個(gè)的鍵值對添加到 Map 中续镇,比如給每個(gè)水果一個(gè)對應(yīng)的編號。
val map = HashMap<String, Int>()
map.put("Apple", 1)
map.put("Banana", 2)
map.put("Orange", 3)
map.put("Pear", 4)
map.put("Grape", 5)
- 這種寫法與 Java 中的寫法相似销部,但是在 Kotlin 中并不建議使用 put() 和 get() 方法對 Map 進(jìn)行添加和讀取操作摸航,而是更加建議使用一種類似于數(shù)組下標(biāo)的語法結(jié)構(gòu),比如向 Map 中添加一條數(shù)據(jù)可以這么寫:
map["Apple"] = 1
val number = map["Apple"]//從 Map 中讀取一條數(shù)據(jù)
//因此可以將代碼優(yōu)化為一下形式
val map = HashMap<String, Int>()
map["Apple"] = 1
map["Banana"] = 2
map["Orange"] = 3
map["Pear"] = 4
map["Grape"] = 5
- 這樣的寫法也不是最簡便的柴墩,在 Kotlin 中提供了一個(gè) mapOf() 和 mutableMapOf() 函數(shù)來繼續(xù)簡化 Map 的用法忙厌。在 mapOf() 函數(shù)中,我們可以直接傳入初始化的鍵值對組合來完成對 Map 集合的創(chuàng)建:
val map = mapOf("Apple" to 1, "Banana" to 2, "Orange" to 3, "Pear" to 4, "Grape" to 5)
集合的函數(shù)式 API
- 需求:如何在一個(gè)水果集合中找到單詞最長的哪個(gè)水果江咳?
傳統(tǒng)實(shí)現(xiàn)方式:
val list = mutableListOf("Apple", "Banana", "Orange", "Pear", "Grape")
var maxLengthFruit = "";for (fruit in list) {
if (fruit.length > maxLengthFruit.length) {
maxLengthFruit = fruit
}
}
println("max length fruit is " + maxLengthFruit)
使用集合 API 實(shí)現(xiàn)(集合內(nèi)數(shù)據(jù)類型必須一致):
val list = mutableListOf("Apple", "Banana", "Orange", "Pear", "Grape")
val maxLengthFruit = list.maxBy { it.length }
println("max length fruit is " + maxLengthFruit)
學(xué)習(xí)了一些kotlin這些接觸逢净,有了些kotlin使用語感,順手寫個(gè)kotlin 語言自定義的柱狀圖實(shí)際體驗(yàn)下歼指,下面鏈接為demo在github的地址
kotlin 語言自定義的柱狀圖