美文网首页
每天学一点 Kotlin -- 集合:Array 数组

每天学一点 Kotlin -- 集合:Array 数组

作者: 冯可乐同学 | 来源:发表于2021-11-04 10:45 被阅读0次

    ----《第一季Kotlin崛起:次世代Android开发 》学习笔记

    总目录:每天学一点 Kotlin ---- 目录
    上一篇:每天学一点 Kotlin -- 高阶函数
    下一篇:每天学一点 Kotlin -- 集合:MutableList

    1. 集合类型 Collection

    1.1 根据集合类型的整体特性,Kotlin 中分为3种集合:
    (1) 有序可重复: Array -- 数组
    (2) 有序不重复: Set
    (3) 无序不重复: Map

    2. Array 数组

    2.1 数组是一个最常用的 Collection 类型。Kotlin 默认推荐使用 Array 类型。

    2.2 Array 完整定义

    Array<类型>  或  arrayOf(元素1, 元素2, .... 元素n)
    

    2.3 特点: 一旦定义后,则数组中元素的类型不可改变,数组的大小也不可改变

    3. 数组的使用:

    3.1 举个栗子1:

    fun main(args: Array<String>) {
    
        val arr1: Array<Int> = arrayOf(1, 2, 3, 4, 5, 6)
    
        val arr2  = arrayOf(1, 2, 3, 4, 5, 6)
    
        println("arr1.size = " + arr1.size)
        println("arr1.count() = " + arr1.count())
    
        println("arr1 -- 1 = " + arr1.first())
        println("arr1 -- 1 = " + arr1.component1())
        println("arr1 -- 2 = " + arr1.component2())
        println("arr1 -- 3 = " + arr1.component3())
        println("arr1 -- 4 = " + arr1.component4())
        println("arr1 -- 5 = " + arr1.component5())
        println("arr1 -- 6 = " + arr1[5])
        println("arr1 -- 6 = " + arr1.last())
    }
    

    打印结果:

    arr1.size = 6
    arr1.count() = 6
    arr1 -- 1 = 1
    arr1 -- 1 = 1
    arr1 -- 2 = 2
    arr1 -- 3 = 3
    arr1 -- 4 = 4
    arr1 -- 5 = 5
    arr1 -- 6 = 6
    arr1 -- 6 = 6
    

    3.2 注意:
    (1) arr1.first() 和arr1.component1() 等价
    (2) component1() 这个函数在 Kotlin 中只提供了5个,其他的要用下标来获取

    3.3 数组的一些其他内置函数:
    (1) 检查包含是否某个元素: contains方法
    (2) 丢弃元素系列:drop, dropWhile 和 dropLast, dropLastWhile
    (3) 查找模式: find
    (4) 把整个数组中的元素中间加逗号输出:joinToString, 当然也可以加以定制
    (5) 取出元素系列:take, takeLast 和 drop, dropLast
    (6) 切割数组:sliceArray
    (7) 反转数组:reverse
    (8) 数组排序:sortedArray 和 sortedArrayDescending, 加强版排序:sortedBy 和 sortedByDescending
    (9) 数组变形: map -- 可以把一种数组转换成另一种类型
    (10) 筛选器: filter
    (11) 最大和最小: max 和 min
    举个栗子2:

    fun main() {
    //    testArray01()
    //    testArray02()
    //    testArray03()
    //    testArray04()
    //    testArray05()
    //    testArray06()
    //    testArray07()
    //    testArray08()
    //    testArray09()
    //    testArray10()
        testArray11()
    }
    
    val arr = arrayOf("C/C++", "Java", "Kotlin", "Python", "北京", "上海", "杭州", "从北京到杭州再到上海")
    val numbers = arrayOf(0, -99, 99, 30, 78, 11)
    
    fun testArray11() {
        // (11) 最大和最小: max 和 min
        println("numbers.minOrNull() = " + numbers.minOrNull())
        println("numbers.maxOrNull() = " + numbers.maxOrNull())
    }
    
    fun testArray10() {
        // (10) 筛选器: filter
        var numTemp = numbers.sliceArray(0..numbers.size - 1)
        println("numTemp.filter = " + numTemp.filter { it > 20 })
    }
    
    val nameString = { msg: String -> "我是:" + msg }
    val printString = { msg: String -> println(msg) }
    
    fun testArray09() {
        // (9) 数组变形: map -- 可以把一种数组转换成另一种类型
        var arrTemp = arr.sliceArray(0..arr.size - 1)
        arrTemp.map(printString)
    
        arrTemp = arr.sliceArray(0..arr.size - 1)
        println("\n\narrTemp.map = " + arrTemp.map(nameString))
    
        var numTemp = numbers.sliceArray(0..numbers.size - 1)
        println("\n\nnumTemp.map = " + numTemp.map { it -> "数字:${it}" })
    }
    
    fun testArray08() {
        // (8) 数组排序:sortedArray 和 sortedArrayDescending, 加强版排序:sortedBy 和 sortedByDescending
        var numTemp = numbers.sliceArray(0..numbers.size - 1)
        println(numTemp.sort())
        println("numTemp.sort = " + numTemp.joinToString())
    
        numTemp = numbers.sliceArray(0..numbers.size - 1)
        println("\nnumTemp.sortedArray = " + numTemp.sortedArray().joinToString())
    
        numTemp = numbers.sliceArray(0..numbers.size - 1)
        println("\nnumTemp.sortedArrayDescending = " + numTemp.sortedArrayDescending().joinToString())
    
        var arrTemp = arr.sliceArray(0..arr.size - 1)
        println("\n\narrTemp.sortedBy 11 = " + arrTemp.sortedBy { s -> s.length })
        println("arrTemp.sortedBy 22 = " + arrTemp.sortedBy { it.length })
    
        arrTemp = arr.sliceArray(0..arr.size - 1)
        println("\n\narrTemp.sortedByDescending 11 = " + arrTemp.sortedByDescending { s -> s.length })
        println("arrTemp.sortedByDescending 22 = " + arrTemp.sortedByDescending { it.length })
    }
    
    fun testArray07() {
        // (7) 反转数组:reverse
        var arrTemp = arr.sliceArray(0..arr.size - 1)
        println("arrTemp.reverse = " + arrTemp.reverse())
        println("arrTemp = " + arrTemp.joinToString())
        println("arr = " + arr.joinToString())
    
        arrTemp = arr.sliceArray(0..arr.size - 1)
        println("\n\narrTemp.reverse(x,y) = " + arrTemp.reverse(2, 5))
        println("arrTemp = " + arrTemp.joinToString())
        println("arr = " + arr.joinToString())
    
        arrTemp = arr.sliceArray(0..arr.size - 1)
        println("\n\narrTemp.reversed = " + arrTemp.reversed())
        println("arr = " + arr.joinToString())
    
        arrTemp = arr.sliceArray(0..arr.size - 1)
        println("\n\narrTemp.reversedArray = " + arrTemp.reversedArray().joinToString())
        println("arr = " + arr.joinToString())
    }
    
    fun testArray06() {
        // (6) 切割数组:sliceArray
        println("arr.sliceArray = " + arr.sliceArray(2..5).joinToString())
        println("arr = " + arr.joinToString())
    }
    
    fun testArray05() {
        // (5) 取出元素系列:take, takeLast 和 drop, dropLast
        println("arr.take = " + arr.take(3))
        println("arr.takeLast = " + arr.takeLast(3))
        println("arr.drop = " + arr.drop(3))
        println("arr.dropLast = " + arr.dropLast(3))
    
        println("arr.get(3) = " + arr.get(3))
        println("arr = " + arr.joinToString())
    }
    
    fun testArray04() {
        // (4) 把整个数组中的元素中间加逗号输出:joinToString, 当然也可以加以定制
        println(arr.joinToString())
    
        println(arr.joinToString { "选项:${it}" })
    }
    
    fun testArray03() {
        // (3) 查找模式: find
        println(arr.find { it.contains("o") })
        println(arr.findLast { it.contains("o") })
    }
    
    fun testArray02() {
        // (2) 丢弃元素系列:drop, dropWhile 和 dropLast, dropLastWhile
        var arrTemp = arr;
        println("arrTemp.drop = " + arrTemp.drop(3))
        println("arr = " + arr.joinToString())
    
        arrTemp = arr
        println("arr1.dropLast = " + arrTemp.dropLast(3))
        println("arr = " + arr.joinToString())
    
        arrTemp = arr
        println("arrTemp.dropWhile = " + (arrTemp.dropWhile { it == "C/C++" || it.contains("Java") }))
        println("arr = " + arr.joinToString())
    
        arrTemp = arr
        println("arrTemp.dropLastWhile = " + (arrTemp.dropLastWhile { it == "从北京到杭州再到上海" || it == "杭州" }))
        println("arr = " + arr.joinToString())
    }
    
    fun testArray01() {
        // (1) 检查包含是否某个元素: contains方法
        println(arr.contains("Kotlin"))
        println(arr.contains("上海"))
    }
    
    

    数组内置的还有很多方法,在以后的使用慢慢探索。

    相关代码:https://gitee.com/fzq.com/test-demo

    相关文章

      网友评论

          本文标题:每天学一点 Kotlin -- 集合:Array 数组

          本文链接:https://www.haomeiwen.com/subject/mtytaltx.html