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運算符
    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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容