Kotlin基礎--集合基礎總結(jié)

在Android日常開發(fā)中讶泰,數(shù)組和集合這兩個數(shù)據(jù)容器是必不可少的毅待。在Kotlin中集合同樣是有三大類:List、Set酪捡、Map叁征。作用含義都和Java 的類似。
-- List 是有序集合
-- Set 是唯一集合
-- Map 是鍵值對集合

如何構造集合

Kotlin中集合又分為 可變集合 以及 不可變集合逛薇∞嗵郏可變集合都是有 mutable修飾的。但是構造集合都是大同小異永罚,下邊會直接通過代碼演示說明之間的差異啤呼。

通過元素進行構造

  • 不可變的集合構造方式
fun createCollection(): Unit {
    //創(chuàng)建不可變有序集合 list
    val list = listOf<String>("你好", "再見", "你好")
    println("list elements is $list")

    //創(chuàng)建不可變唯一集合 set
    val set = setOf<Int>(1, 2, 3, 3, 4)
    println("set elements is $set")

    //創(chuàng)建不可變鍵值對集合 map
    val map1 = mapOf<Int, String>(1 to "小明", 2 to "大明", 3 to "大明")
    println("map elements is $map1")
    val map2 = mapOf<Int, String>(1 to "小明", 2 to "大明", 3 to "大明", 3 to "大能")
    println("map elements is $map2")
}

控制臺打印

list elements is [你好, 再見, 你好]
set elements is [1, 2, 3, 4]
map1 elements is {1=小明, 2=大明, 3=大明}
map2 elements is {1=小明, 2=大明, 3=大能}

可以看到,set集合有唯一性呢袱。map集合與Java中的map集合一樣媳友,key也是唯一性。Kotlin空安全的設計产捞,默認創(chuàng)建下 value 是不能為 null 的『哂可以通過 ? 來輸入 null坯临。

    val map3 = mapOf<Int, String?>(1 to "小明", 2 to "大明", 3 to null)
    println("map3 elements is $map3")
map3 elements is {1=小明, 2=大明, 3=null}
  • 可變集合創(chuàng)建
    可變集合創(chuàng)建,只需要在對應的集合前加上 mutable
val mutableListOf = mutableListOf<String>()

可變集合則可以在創(chuàng)建之后通過 add 等修改方法恋昼,添加或者刪除集合中的元素看靠。

創(chuàng)建具體類型的集合

    val arrayList1 = ArrayList<Int>(listOf(1,2,3))
    println("arrayList1 is $arrayList1")
    arrayList1.add(6)
    println("arrayList1 is $arrayList1")

    val linkedList = LinkedList<String>(listOf("小明","大明"))
    println("linkedList is $linkedList")
    linkedList.addFirst("小能")
    println("linkedList is $linkedList")
    linkedList.addLast("大能")
    println("linkedList is $linkedList")
arrayList1 is [1, 2, 3]
arrayList1 is [1, 2, 3, 6]
linkedList is [小明, 大明]
linkedList is [小能, 小明, 大明]
linkedList is [小能, 小明, 大明, 大能]

集合的復制

fun copyCollection(){
    val sourceList = mutableListOf<Int>(1, 3, 4, 5, 6, 7,7)
    println("sourceList is $sourceList")
    val copyList = sourceList.toMutableList()
    println("copyList is $copyList")
    println("===== modify source collection =====")
    copyList.add(9)
    println("sourceList is $sourceList")
    println("copyList is $copyList")
    println("===== transform list to set collection =====")
    val transformSet = sourceList.toMutableSet()
    println("sourceList is $sourceList")
    println("transformSet is $transformSet")
    println("===== sole reference =====")
    val reference = sourceList
    reference.add(10)
    println("reference is $reference")
    println("sourceList is $sourceList")
    println("copyList is $copyList")
    println("transformSet is $transformSet")
}

Kotlin 中集合的復制,相當于將數(shù)據(jù)重新備份到一個新的對象中液肌,一個新的內(nèi)存區(qū)域中挟炬。在修改拷貝之后的集合,原集合的數(shù)據(jù)內(nèi)容也是不會發(fā)生改變的。
同時谤祖,集合拷貝還可以將 List 的數(shù)據(jù)轉(zhuǎn)為 Set 的數(shù)據(jù)婿滓。
如果集合都是對應一個引用,則在修改集合內(nèi)容的時候粥喜,同一個引用的集合數(shù)據(jù)也是同樣會有修改的凸主。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市额湘,隨后出現(xiàn)的幾起案子卿吐,更是在濱河造成了極大的恐慌,老刑警劉巖锋华,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗡官,死亡現(xiàn)場離奇詭異,居然都是意外死亡毯焕,警方通過查閱死者的電腦和手機衍腥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芥丧,“玉大人紧阔,你說我怎么就攤上這事⌒#” “怎么了擅耽?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長物遇。 經(jīng)常有香客問我乖仇,道長,這世上最難降的妖魔是什么询兴? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任乃沙,我火速辦了婚禮,結(jié)果婚禮上诗舰,老公的妹妹穿的比我還像新娘警儒。我一直安慰自己,他們只是感情好眶根,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布蜀铲。 她就那樣靜靜地躺著,像睡著了一般属百。 火紅的嫁衣襯著肌膚如雪记劝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天族扰,我揣著相機與錄音厌丑,去河邊找鬼定欧。 笑死,一個胖子當著我的面吹牛怒竿,可吹牛的內(nèi)容都是我干的砍鸠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼愧口,長吁一口氣:“原來是場噩夢啊……” “哼睦番!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起耍属,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤托嚣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后厚骗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體示启,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年领舰,在試婚紗的時候發(fā)現(xiàn)自己被綠了夫嗓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡冲秽,死狀恐怖舍咖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锉桑,我是刑警寧澤排霉,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站民轴,受9級特大地震影響攻柠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜后裸,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一瑰钮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧微驶,春花似錦浪谴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至容燕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間婚度,已是汗流浹背蘸秘。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工官卡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人醋虏。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓寻咒,卻偏偏與公主長得像奢啥,于是被迫代替她去往敵國和親哑姚。 傳聞我的和親對象是個殘疾皇子镜雨,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容