Kotlin 数组的常见操作

Kotlin 数组的常见操作,在编写程序时数组比较常用,灵活地使用数组对实现程序中特殊的功能很重要。在本章我们将针对数组的常见操作进行详细地讲解,如数组的遍历、数组元素修改、查找数组元素角标等。

数组遍历

(1)for循环遍历数组
在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。接下来我们通过一个案例来学习如何使用for循环来遍历数组,具体代码如下所示。

package com.itheima.chapter02.array
fun main(args: Array<String>) {
    var int_arr: IntArray
    int_arr = intArrayOf(1, 2, 3, 4)
    for (i in int_arr) {
        println(i)
    }
}

运行结果:

1
2
3
4

上述代码中,定义了一个长度为4的数组int_arr,数组的角标范围为0~3。由于for循环中变量i的值在循环过程中为数组的元素,因此直接打印变量i的值。

(2)for循环遍历数组中的元素以及角标
通过for循环遍历数组中的元素以及角标,具体代码如下所示。

package com.itheima.chapter02.array
fun main(args: Array<String>) {
    var arr: IntArray = intArrayOf(1, 2, 3, 4)   //定义数组arr 并初始化
    for ((index, i) in arr.withIndex()) {
        println(" 角标=$index元素=$i")
    }
}

运行结果:

角标=0元素=1
角标=1元素=2
角标=2元素=3
角标=3元素=4

上述代码中,定义了一个长度为4的数组arr,数组的角标范围为0~3。在第3行代码中,index表示数组中元素对应的角标,i表示数组中的元素,接着通过数组的withIndex()方法来遍历并打印数组中元素对应的角标和元素。

数组最值

在操作数组时,经常需要获取数组中元素的最值。接下来我们通过一个案例来学习一下如何获取数组中元素的最大值,具体代码如下所示。

package com.itheima.chapter02.array
fun main(args: Array<String>) {
    var arr: IntArray = intArrayOf(1, 2, 3, 4)   //定义数组arr 并初始化
    var max: Int = 0           //定义一个整型变量max 存放最大值
    max = arr[0]               //首先假设数组中第1 个元素为最大值
    for (i in arr) {           //通过一个for 循环遍历数组中的元素
        if (i > max) {         //比较数组中的元素i 是否大于max
            max = i            //条件成立,则将i 赋给max
        }
   }
   println("max=" + max)      //打印最大值max
}

运行结果:

max=4

在上述代码中,定义了一个IntArray类型的数组arr,并初始化该数组。定义了一个整型变量max,用于记录数组的最大值。首先假设数组中第1个元素arr[0]为最大值并将该值赋给变量max,接着使用for循环对数组进行遍历,在遍历的过程中只要遇到比max值大的元素,就将该元素赋给变量max。因此,变量max就可以在循环结束时记录数组中的最大值。需要注意的是for循环中的i对应的是数组中的元素。

数组元素修改

在操作数组时,如果想修改数组中某一个角标对应的元素,该如何修改呢?接下来我们通过一个案例来学习一下如何修改数组中角标对应的元素,具体代码如下所示。

package com.itheima.chapter02.array
fun main(args: Array<String>) {
    var newArr: IntArray = intArrayOf(1, 2, 3, 4)// 定义数组newArr 并初始化
    newArr[0] = 10        // 将角标为0 对应的元素设置为10
    newArr.set(3, 16)     // 将角标为3 对应的元素设置为16
    newArr.forEachIndexed { index, i ->
        println(" 角标=$index元素=$i")  //打印数组中的角标和元素
    }
}

运行结果:

角标=0元素=10
角标=1元素=2
角标=2元素=3
角标=3元素=16

在上述代码中,定义了一个长度为4,类型为IntArray的数组newArr,并初始化该数组。第4行和5行分别是以两种形式来修改数组中角标对应的元素,第4行是以“数组[角标]=值”的形式来设置角标为0时的元素为10,第5行是以“数组.set(角标,值)”的形式来设置角标为3时的元素为16。最后通过数组的forEachIndexed()方法来遍历并打印数组中元素的角标和元素。

查找数组元素角标

在定义数组时,数组中的元素可以是相同的,如果想查找数组中的一个元素的角标,首先需要指定查找的这个元素,进而判断查找的是元素中的第1个元素的角标还是最后一个元素的角标,接下来我们通过案例来学习如何查找元素对应的角标。

(1)查找数组中指定元素的第1个角标
查找数组中指定元素中的第1个元素的角标,具体代码如下所示。

package com.itheima.chapter02.array
fun main(args: Array<String>) {
    var newArr: IntArray = intArrayOf(6, 4, 3, 4, 9)
    println(" 第1 个元素4 的角标为" + newArr.indexOf(4))
}

运行结果:

第1个元素4的角标为1

在上述代码中,首先定义了一个IntArray类型的数组newArr,同时初始化该数组。在该数组中可以看到有两个元素4,接下来查找这两个元素4中第1个元素4的角标,在第4行中通过数组的indexOf()方法来查找,该方法中传递的参数4就是需要查找的元素。

除了调用数组的indexOf()方法来查找指定元素中第1个元素的角标之外,还可以通过数组的indexOfFirst()方法来查找指定元素中第1个元素的角标。稍微修改一下上述代码后的具体代码如下所示。

package com.itheima.chapter02.array
fun main(args: Array<String>) {
    var newArr: IntArray = intArrayOf(6, 4, 3, 4, 9)
    var index = newArr.indexOfFirst {    //查找数组中第1 个元素为4 对应的角标
        it == 4                               //将需要查找的元素赋值给it
    }
    println(" 第1 个元素4 的角标为" + index)
}

运行结果:

第1个元素4的角标为1

在上述代码中,第4~6行是通过调用数组的indexOfFirst()方法来查找数组中第1个元素4对应的角标,其中第5行中的it表示需要查找的元素,因此将需要查找的元素4赋值给it。最后打印数组中查找的第1个元素4的角标。

(2)查找数组中指定元素的最后一个角标
查找数组中指定元素中的最后一个元素的角标,具体代码如下所示。

package com.itheima.chapter02.array
fun main(args: Array<String>) {
    var newArr: IntArray = intArrayOf(6, 4, 3, 4, 9)
    println(" 最后一个元素4 的角标为" + newArr.lastIndexOf(4))
}

运行结果:

最后一个元素4的角标为3

在上述代码中,首先定义了一个IntArray类型的数组newArr,同时初始化该数组。在该数组中可以看到有两个元素4,接下来查找这两个元素4中最后一个元素4的角标,在第4行中通过数组的lastIndexOf()方法来查找,该方法中传递的参数4就是需要查找的元素。

除了调用数组的lastIndexOf()方法来查找指定元素的角标之外,还可以通过数组的indexOfLast()方法来查找指定元素的最后一个角标。稍微修改一下上述代码,具体代码如下所示。

package com.itheima.chapter02.array
fun main(args: Array<String>) {
    var newArr: IntArray = intArrayOf(6, 4, 3, 4, 9)
    var index = newArr.indexOfLast {   //查找数组中最后一个元素为4 对应的角标
        it == 4                             //将需要查找的元素赋值给it
    }
    println(" 最后一个元素4 的角标为" + index)
}

运行结果:

最后一个元素4的角标为3

上述代码中,第4~6行是通过调用数组的indexOfLast()方法来查找数组中最后一个元素4对应的角标,其中第5行中的it表示需要查找的元素,因此将需要查找的元素4赋值给it。最后打印数组中查找的最后一个元素4的角标。

酷客教程相关文章:

赞(0)

评论 抢沙发

评论前必须登录!