Kotlin 数组和集合(一){创建数组、使用数组、使用for 您所在的位置:网站首页 bool数组默认初始化 Kotlin 数组和集合(一){创建数组、使用数组、使用for

Kotlin 数组和集合(一){创建数组、使用数组、使用for

2023-09-08 04:37| 来源: 网络整理| 查看: 265

【文字内容源于《疯狂Kotlin讲义》,代码内容原创】

Kotlin 数组和集合(二){Set集合、List集合、Map集合}_桃子不出的博客-CSDN博客_kotlin sortedset

目录

1. 创建数组

2. 使用数组

3. 使用 for-in 循环遍历数组

4. 使用数组索引

5. 多维数组

1. 创建数组

[1] 使用 arrayOf()函数:这种方式无须显式指定数组的长度,但需要依次列出每个数组元素。因此,这种方式其实就相当于 Java 数组的静态初始化。使用这种方式创建数组时,由于程序己经给出了每个数组元素,因此 Kotlin 可以推断出数组元素的类型。所以,不需要在 arrayOf() 函数上使用泛型来指定数组元素的类型。

val intList = arrayOf(1, 2, 3) for (i in intList) { println("intList has $i") } 运行结果: intList has 1 intList has 2 intList has 3

[2] 使用 arrayOfNulls ()函数:这种方式需要显式指定数组的长度,数组元素全部被初始化null ,可见这种方式就是 Java 数组的动态初始化。使用这种方式创建数组时,由于Kotlin 无法推断出数组元素的类型,所以需要在 rrayOfNull ()函数上使用泛型来指定数组元素的类型。

val stringList = arrayOfNulls(3) stringList[0] = "hello" stringList[1] = "你好" stringList[2] = "萨瓦迪卡" for (s in stringList) { println("stringList has $s") } 运行结果: stringList has hello stringList has 你好 stringList has 萨瓦迪卡

[3] 使用 emptyArray()函数: 这种方式会创建一个长度为0的空数组。由于没有指定数组元素,因此需要使用泛型来指定数组元素的类型。

val emptyList = arrayOfNulls(4) for (e in emptyList){ println("emptyList has $e") } 运行结果: emptyList has null emptyList has null emptyList has null emptyList has null

[4] 使用 Array(size: 川, init: (Int) -> )构造器: 这种方式需要显式指定数组的长度,并可通过 Lambda 表达式来动态计算各数组元素的值。这种方式是原来 Java 所不具备的。

val arr1 = Array(3) { "test" } for (a1 in arr1) { println("arr1 has $a1") } 运行结果: arr1 has test arr1 has test arr1 has test //Lambda表达式中的it用于代表该表达式的唯一形参 val arr2 = Array(3) { (it + 2) * 4 } for (a2 in arr2) { println("arr2 has $a2") } 运行结果: arr2 has 8 arr2 has 12 arr2 has 16 2. 使用数组

数组的常用方法就是访问数组元素,包括对数组元素进行赋值和取出数组元素的值。访问数组元素都是通过在数组引用变量后紧跟 个方括号( [] )实现的,方括号里是数组元素的索引。正如前面所介绍的, Kotlin 的方括号运算符其实是 get(index)和 set(index, value)方法,因此当程序使用[i]获取数组元素的值时,实际上就是调用 get( index )方法;当使用 [index]对数组元素赋值时,实际上就是调用 set(index , value)方法。

val intArray = intArrayOf(11, 22, 33, 44) //获取第一个元素的值 println("intArray[0] = ${intArray[0]}") //对第三个元素的值重新赋值 println("intArray[0] before is ${intArray[2]}") intArray[2] = 333 println("intArray[0] after is ${intArray[2]}") 运行结果: intArray[0] = 11 intArray[0] before is 33 intArray[0] after is 333 3. 使用 for-in 循环遍历数组

Kotlin for-in 循环可自动遍历数组的每个元素。

val forInArray = arrayOf("今天过得好吗?", "今天过得好。", "那真是太好了。") for (f in forInArray) { println(f) } 运行结果: 今天过得好吗? 今天过得好。 那真是太好了。 4. 使用数组索引

[1] 使用索引遍历数组时使用until arra size 这种方式来创建区间。

[2] Kotlin 的数组提供了indices 属性,该属性即可返回数组的索引区间。(更便捷)

val indicesArray = arrayOf(1, 3, 5, 7, 9) for (index1 in 0 until indicesArray.size) { println("[1]until test : ${indicesArray[index1]}") } for (index2 in indicesArray.indices) { println("[2]indices test : ${indicesArray[index2]}") } 运行结果: [1]until test : 1 [1]until test : 3 [1]until test : 5 [1]until test : 7 [1]until test : 9 [2]indices test : 1 [2]indices test : 3 [2]indices test : 5 [2]indices test : 7 [2]indices test : 9 5. 多维数组

所谓的多维数组其实都是 维数组,只要让数组的元素又是数组,那么该数组就变成了多维数组。

val multiArray = arrayOfNulls(4) //初始化数组元素 multiArray[0] = arrayOf("现在是春天吗?", "是的,现在是春天。") multiArray[1] = arrayOf("现在是夏天吗?", "是的,现在是夏天。") multiArray[2] = arrayOf("现在是秋天吗?", "是的,现在是秋天。") multiArray[3] = arrayOf("现在是冬天吗?", "是的,现在是冬天。") for (firstIndex in multiArray.indices) { val detailString = StringBuilder("") for (secondIndex in multiArray[firstIndex]!!.indices) { detailString.append(multiArray[firstIndex]!![secondIndex]) if (secondIndex != multiArray[firstIndex]!!.lastIndex) { detailString.append(" | ") } } println("$firstIndex | $detailString") } 运行结果: 0 | 现在是春天吗? | 是的,现在是春天。 1 | 现在是夏天吗? | 是的,现在是夏天。 2 | 现在是秋天吗? | 是的,现在是秋天。 3 | 现在是冬天吗? | 是的,现在是冬天。 今天的内容到此结束!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有