kotlin練習(xí) ---- 集合練習(xí)

kotlin練習(xí) - 集合練習(xí)

Set集合

  • Set集合創(chuàng)建
fun main(args: Array<String>) {
    //創(chuàng)建不可變集合咳胃,返回Set
    var set = setOf("java", "kotlin", "go")
    println(set)//[java, kotlin, go]
    println("setOf 返回類型 ${set.javaClass}")

    //創(chuàng)建可變集合冰啃,返回值MutableSet
    var mutablemap = mutableListOf("java", "kotlin", "go")
    mutablemap[0] = "JavaScript"
    println(mutablemap)//[JavaScript, kotlin, go]
    println("mutableListOf 返回類型 ${mutablemap.javaClass}")

    //創(chuàng)建LinkedHashSet集合
    var linkedHashSet = linkedSetOf("java", "kotlin", "go")
    println(linkedHashSet)
    println("linkedHashSet 返回類型 ${linkedHashSet.javaClass}")

    //創(chuàng)建HashSet集合
    var hashSet = hashSetOf("java", "kotlin", "go")
    println(hashSet)//不保證元素的順序--[kotlin, go, java]

    //創(chuàng)建TreeSet集合
    var treeSet = sortedSetOf("java", "kotlin", "go")
    println(treeSet)//集合按從小到大排列--[go, java, kotlin]
}
  • Set集合的使用
   //創(chuàng)建不可變集合,返回Set
    var set = setOf("java", "kotlin", "go")

    //判斷是否所有的元素長度都大于5  ------所有元素都滿足條件
    println(set.all { it.length > 5 })// false

    //判斷是否任意一元素的長度大于5  ------任意元素都滿足條件
    println(set.any { it.length > 5 })//true

    //以Lambda 表達(dá)式的值為key , 集合元素為value ,組成的Map集合
    var map = set.associateBy({ "我正在學(xué)習(xí)${it}" })
    println(map)//{我正在學(xué)習(xí)java=java, 我正在學(xué)習(xí)kotlin=kotlin, 我正在學(xué)習(xí)go=go}

    //使用in榨乎、!in運(yùn)算符
    println("java" in set)// true
    println("java" !in set)// false

    //刪除Set集合前面兩個元素
    var dropedList = set.drop(2)
    println(dropedList)// [go]

    //對Set集合進(jìn)行過濾: 需要得到所有包含 va 的集合,
    var filteredList1 = set.filter({ "va" in it })//如果沒有返回空元素的集合
    println(filteredList1)//[java]

    //查找Set集合中包含 va 的元素节槐,如果找到就返回該元素鸭限,否則返回 null
    var filteredList2 = set.find({ "o" in it })
    println(filteredList2)//kotlin
    var filteredList3 = set.find({ "va1" in it })
    println(filteredList3)//null

    //將Set集合中所有字符串拼接在一起
    var foldedList1 = set.fold("", { acc, s -> acc + s })
    println(foldedList1)//javakotlingo
    var foldedList2 = set.fold("456", { acc, s -> acc +" 123 ${s}"  })
    println(foldedList2)//456 123 java 123 kotlin 123 go
    //查找某個元素的出現(xiàn)位置------沒有就會返回-1
    println(set.indexOf("kotlin"))// 1
    println(set.indexOf("kotlin1"))// -1
    
      //循環(huán)遍歷
    var books = setOf("瘋狂java講義", "瘋狂kotlin講義", "瘋狂IOS講義", "瘋狂android講義")
    for (book in books){
        println(book)
    }
    books.forEach({
        println(it)
    })
    for (i in books.indices){
        println(books.elementAt(i))
    }
    
    var books = mutableSetOf("瘋狂java講義")
      //新增
    books.addAll(setOf("瘋狂kotlin講義", "瘋狂IOS講義"))
    books.add("瘋狂android講義")
    println(books.toString())//[瘋狂java講義, 瘋狂kotlin講義, 瘋狂IOS講義, 瘋狂android講義]
    //刪除
    books.remove("瘋狂kotlin講義")
    println(books.toString())//[瘋狂java講義,瘋狂IOS講義, 瘋狂android講義]
    books.removeAll(setOf("瘋狂java講義"))
    println(books.toString())//[瘋狂IOS講義, 瘋狂android講義]
    //清空所有
    books.clear()
    println(books.toString())//[]
    //只保留公共的元素
    books = mutableSetOf("瘋狂java講義", "瘋狂kotlin講義", "瘋狂IOS講義", "瘋狂android講義")
    books.retainAll(setOf("瘋狂kotlin講義", "瘋狂PHP講義", "瘋狂android講義"))
    println(books.toString())//[瘋狂kotlin講義, 瘋狂android講義]

List集合

  • List集合創(chuàng)建
    var list1 = listOf(1, 2, 3, 4, 5, null, 7, 8, 9)
    println(list1.toString())//[1, 2, 3, 4, 5, null, 7, 8, 9]
    var list2 = listOfNotNull(1, 2, 3, 4, 5, null, 7, 8, 9)
    println(list2.toString())//[1, 2, 3, 4, 5, 7, 8, 9]
    var list3 = mutableListOf(1, 2, 3, 4, 5, null, 7, 8, 9)
    println(list3.toString())//[1, 2, 3, 4, 5, null, 7, 8, 9]
    list3.add(10)
    list3.set(5, 6)
    println(list3.toString())//[1, 2, 3, 4, 5, 6, 7, 8, 9,10]
    var list4 = arrayListOf(1, 2, 3, 4, 5, null, 7, 8, 9)
    println(list4.toString())//[1, 2, 3, 4, 5, null, 7, 8, 9]
    list4.set(5, 6)
    list4.add(10)
    println(list4.toString())//[1, 2, 3, 4, 5, 6, 7, 8, 9,10]
  • List集合的使用
 //遍歷List
    var list1 = listOf("Java", null, "Kotlin", "Go")
    list1.forEach {
        println(it)
    }
    for (str in list1) {
        println(str)
    }
    for (i in list1.indices) {
        println(list1[i])
        println("get = ${list1.get(i)}")
        println("elementAt = ${list1.elementAt(i)}")
    }
    var index = list1.indexOf("Go")
    println("Go 在數(shù)組中的位置:${index}")//3

    var list2 = mutableListOf(1, 2, 3, 1, 8, 3, 4, 6, 1, 4, 2, 3)
    //最后一次出現(xiàn)的的位置
    var last1 = list2.lastIndexOf(2)//10
    //最后一次出現(xiàn)的的位置
    var last2 = list2.indexOfLast { it == 2 }//10
    //第一次出現(xiàn)的位置
    var first = list2.indexOfFirst { it == 2 }//1
    println("2在數(shù)組中第一次出現(xiàn)在${first},最后一次出現(xiàn)在${last1},${last2}")
    //返回集合
    var list3 = listOf("Java", null, "Kotlin", "PHP", null, "Go")
    var sublist = list3.subList(2, 5)//從第2個到第5個之間的元素
    println(sublist.toString())//[Kotlin, PHP, null]
//    var list4 = mutableListOf("Java", "JavaScript", null, "HTML", "Kotlin", null, "Python", "PHP", "Go")
    var list4 = mutableListOf("Java", null, "HTML", "Go")
    println(list4)//[Java, null, HTML, Go]
    //新增
    list4.add("Python")
    list4.add(2, "C++")
    list4.addAll(listOf("Kotlin", null))
    println(list4)//[Java, null, C++, HTML, Go, Python, Kotlin, null]
    //刪除
    list4.removeAt(1)
    println(list4)//[Java, C++, HTML, Go, Python, Kotlin, null]
    //list4[6] ="CSS";
    list4.set(6, "CSS")
    println(list4)//[Java, C++, HTML, Go, Python, Kotlin, CSS]
    list4.remove("Go")
    println(list4)//[Java, C++, HTML, Python, Kotlin, CSS]
    list4.add(3, "Go")
    list4.add(5, "Go")
    println(list4)//[Java, C++, HTML, Go, Python, Go, Kotlin, CSS]
    //替換元素
    list4.replaceAll {
        if (it.equals("Go")) {
            "go"
        } else {
            it
        }
    }
    println(list4)//[Java, C++, HTML, go, Python, go, Kotlin, CSS] 
    //刪除
    list4.removeAll(listOf("go"))
    println(list4)//[Java, C++, HTML, Python, Kotlin, CSS]

    //清空
    list4.clear()
    println(list4)//[]

Map集合

  • Map集合創(chuàng)建
    //不可變map集合
    var map1 = mapOf("Java" to 1, "JavaScript" to 2, "HTML" to 3, "Kotlin" to 4)
    println(map1)//{Java=1, JavaScript=2, HTML=3, Kotlin=4}
    //可變集合MutableMap
    var map2 = mutableMapOf("Java" to 1, "JavaScript" to 2, "HTML" to 3, "Kotlin" to 4)
    println(map2)//{Java=1, JavaScript=2, HTML=3, Kotlin=4}
    map2.put("Python", 5)
    println(map2)//{Java=1, JavaScript=2, HTML=3, Kotlin=4, Python=5}
    map2.remove("JavaScript")
    println(map2)//{Java=1, HTML=3, Kotlin=4, Python=5}
    //HashMap集合----不保證key-value的順序
    var map3 = hashMapOf("Java" to 1, "JavaScript" to 2, "HTML" to 3, "Kotlin" to 4)
    println(map3)//{Java=1, HTML=3, JavaScript=2, Kotlin=4}
    //LinkedHashMap集合---key-value按添加順序排列
    var map4 = linkedMapOf("Java" to 1, "JavaScript" to 2, "HTML" to 3, "Kotlin" to 4)
    println(map4)//{Java=1, JavaScript=2, HTML=3, Kotlin=4}
    //SortedMap集合------ key-value按key由小到大排列
    var map5 = sortedMapOf("Java" to 1, "Python" to 5, "HTML" to 3, "Kotlin" to 4, "JavaScript" to 2, "Go" to 6)
    println(map5)//{Go=6, HTML=3, Java=1, JavaScript=2, Kotlin=4, Python=5}

  • Map集合的使用
    var map1 = mapOf("Java" to 1, "JavaScript" to 2, "HTML" to 3, "Kotlin" to 4)
    //當(dāng)map集合中所有key-value對都滿足條件返回true
    var all = map1.all {
        it.key.length >= 4 && it.value > 0
    }
    println(all)//true
    //當(dāng)map集合中任意一個key-value對滿足條件就會返回true
    var any = map1.any {
        it.key.length >= 10 && it.value > 1
    }
    println(any)//true
    //判斷map集合中是否有對于key的key-value
    println("Java" in map1);//true
    println("Java" !in map1);//false
    println("Go" in map1);//false
    println("Go" !in map1);//true

    //對map進(jìn)行過濾闰蚕,要求key中包含:Java
    var filterMap1 = map1.filter { "Java" in it.key }
    println(filterMap1)//{Java=1, JavaScript=2}
    var filterMap2 = map1.filter { it.key in "Java" }
    println(filterMap2)//{Java=1}
    //通過map集合,返回一個新的List
    var mappedList1 = map1.map { "《瘋狂${it.key}》講義,第${it.value}個" }
    var mappedList2 = map1.map { "《瘋狂${it.key}》講義" to "第${it.value}個" }
    println(mappedList1)//[《瘋狂Java》講義,第1個, 《瘋狂JavaScript》講義,第2個, 《瘋狂HTML》講義,第3個, 《瘋狂Kotlin》講義,第4個]
    println(mappedList2)//[(《瘋狂Java》講義, 第1個), (《瘋狂JavaScript》講義, 第2個), (《瘋狂HTML》講義, 第3個), (《瘋狂Kotlin》講義, 第4個)]
    //Map集合中key-value對中 value最大的值
    var maxby1 = map1.maxBy { it.value }
    println(maxby1)//Kotlin=4

    //Map集合中key-value對中 value最小的值
    var minby1 = map1.minBy { it.value }
    println(minby1)//Java=1

    //Map集合中key-value對中 key的長度最大的值
    var maxby2 = map1.maxBy { it.key.length }
    println(maxby2)//JavaScript=2

    //Map集合中key-value對中 key的長度最小的值
    var minby2 = map1.minBy { it.key.length }
    println(minby2)//Java=1

    var map2 = mapOf("Java" to 1, "JavaScript" to 2, "HTML" to 3, "Kotlin" to 4)
    var map3 = mapOf("Python" to 1, "Go" to 2, "HTML" to 3, "Kotlin" to 4)
    //集合相加---相當(dāng)于并集
    println(map2 + map3)//{Java=1, JavaScript=2, HTML=3, Kotlin=4, Python=1, Go=2}
    //集合相減---減去公共的元素
    println(map2 - map3)//{Java=1, JavaScript=2, HTML=3, Kotlin=4}

    var plus = map2.plus(map3)
    println(plus)//{Java=1, JavaScript=2, HTML=3, Kotlin=4, Python=1, Go=2}

    var minus = map2.minus(map3)
    println(minus)//{Java=1, JavaScript=2, HTML=3, Kotlin=4}
    //遍歷Map集合
    var map4 = mapOf("Java" to 1, "JavaScript" to 2, "HTML" to 3, "Kotlin" to 4, "Go" to 5)
    for (en in map4.entries) {
        println("${en.key} -> ${en.value}")
    }
    for (key in map4.keys) {
        println("${key} -> ${map4[key]}")
    }
    for ((key, value) in map4) {
        println("${key} -> ${value}")
    }
    map4.forEach({
        println("${it.key} -> ${it.value}")
    })

    var map5 = mutableMapOf("Java" to 1, "JavaScript" to 2, "HTML" to 3, "Kotlin" to 4, "Go" to 5)
    map5["Go"] = 0
    println(map5)//{Java=1, JavaScript=2, HTML=3, Kotlin=4, Go=0}
    map5.put("HTML", 10)
    println(map5)//{Java=1, JavaScript=2, HTML=10, Kotlin=4, Go=0}
    map5.remove("Go")
    println(map5)//{Java=1, JavaScript=2, HTML=10, Kotlin=4}
    map5.remove("Java", 2)
    println(map5)//{Java=1, JavaScript=2, HTML=10, Kotlin=4}
    map5.remove("Java", 1)
    println(map5)//{JavaScript=2, HTML=10, Kotlin=4}
    map5.putAll(hashMapOf("PHP" to 6, "C++" to 7,"JavaScript" to 8 ))
    println(map5)//{JavaScript=8, HTML=10, Kotlin=4, PHP=6, C++=7}
    //清空Map集合
    map5.clear()
    println(map5)//{}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末懂从,一起剝皮案震驚了整個濱河市授段,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌番甩,老刑警劉巖侵贵,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異缘薛,居然都是意外死亡窍育,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門宴胧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來漱抓,“玉大人,你說我怎么就攤上這事恕齐∑蚵Γ” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵显歧,是天一觀的道長仪或。 經(jīng)常有香客問我,道長士骤,這世上最難降的妖魔是什么范删? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮敦间,結(jié)果婚禮上瓶逃,老公的妹妹穿的比我還像新娘束铭。我一直安慰自己廓块,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布契沫。 她就那樣靜靜地躺著带猴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪懈万。 梳的紋絲不亂的頭發(fā)上拴清,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天靶病,我揣著相機(jī)與錄音,去河邊找鬼口予。 笑死娄周,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沪停。 我是一名探鬼主播煤辨,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼木张!你這毒婦竟也來了众辨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤舷礼,失蹤者是張志新(化名)和其女友劉穎鹃彻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妻献,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛛株,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了育拨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泳挥。...
    茶點(diǎn)故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖至朗,靈堂內(nèi)的尸體忽然破棺而出屉符,到底是詐尸還是另有隱情,我是刑警寧澤锹引,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布矗钟,位于F島的核電站,受9級特大地震影響嫌变,放射性物質(zhì)發(fā)生泄漏吨艇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一腾啥、第九天 我趴在偏房一處隱蔽的房頂上張望东涡。 院中可真熱鬧,春花似錦倘待、人聲如沸疮跑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祖娘。三九已至,卻和暖如春啊奄,著一層夾襖步出監(jiān)牢的瞬間渐苏,已是汗流浹背掀潮。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琼富,地道東北人仪吧。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像鞠眉,于是被迫代替她去往敵國和親邑商。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評論 2 353

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