kotlin定义数组
时间: 2023-12-22 15:25:30 浏览: 84
在 Kotlin 中,定义数组可以使用以下两种方式:
1. 使用 arrayOf() 函数创建数组,该函数接受任意数量的参数,并返回一个包含这些参数的数组。例如:
```
val arr = arrayOf(1, 2, 3, 4, 5)
```
2. 使用 Array 类的构造函数创建数组,该构造函数接受两个参数:数组大小和一个用于初始化数组元素的 lambda 表达式。例如:
```
val arr = Array(5) { i -> i * 2 }
```
上述代码将创建一个包含 5 个元素的数组,每个元素的值都是它的下标乘以 2。
相关问题
kotlin 求数组的度:给定一个非空且只包含非负数的整数数组 nums,数组的 度 的定义是指数组里任一元素出现频数的最大值。
可以使用 HashMap 来解决此问题。首先使用 HashMap 存储每个数字出现的次数以及第一次出现的索引位置。然后遍历 HashMap,找到出现次数最多的数字,并计算其第一次出现和最后一次出现的位置之差,即为数组的度。
示例代码:
```kotlin
fun findShortestSubArray(nums: IntArray): Int {
val map = mutableMapOf<Int, IntArray>() // 存储数字出现的次数和第一次出现的位置
var maxCount = 0 // 数组的度
var minLen = Int.MAX_VALUE // 最短的子数组长度
// 遍历数组,记录每个数字出现的次数和第一次出现的位置
for (i in nums.indices) {
val num = nums[i]
if (map.containsKey(num)) {
map[num]!![0]++
map[num]!![2] = i
} else {
map[num] = intArrayOf(1, i, i)
}
maxCount = maxOf(maxCount, map[num]!![0])
}
// 遍历 HashMap,找到出现次数最多的数字,并计算其第一次出现和最后一次出现的位置之差
for ((_, value) in map) {
if (value[0] == maxCount) {
minLen = minOf(minLen, value[2] - value[1] + 1)
}
}
return minLen
}
```
在上面的示例代码中,我们首先创建一个空的 HashMap,用于存储每个数字出现的次数和第一次出现的位置。然后遍历数组,记录每个数字出现的次数和第一次出现的位置,并更新数组的度。最后遍历 HashMap,找到出现次数最多的数字,并计算其第一次出现和最后一次出现的位置之差,即为数组的度。
kotlin数据解析数组
可以使用 Kotlin 中的 Gson 库来解析 JSON 数组数据。首先,你需要定义一个数据模型类来表示 JSON 中的单个元素。然后,你可以使用 Gson 的 fromJson 方法将 JSON 字符串转换为一个包含多个元素的列表,如下例所示:
```
data class Item(val id: Int, val name: String, val price: Double)
val jsonString = "[{\"id\":1,\"name\":\"apple\",\"price\":1.99},{\"id\":2,\"name\":\"banana\",\"price\":0.99}]"
val items = Gson().fromJson(jsonString, Array<Item>::class.java).toList()
```
在这个例子中,我们定义了一个 Item 类来表示 JSON 中的一个元素,然后使用 Gson 的 fromJson 方法将 JSON 字符串转换为一个 Item 类型的数组,最后使用 toList 方法将数组转换为列表。
以上是基于 Gson 库的解析方式,当然也有其他的 JSON 解析库可供选择。
阅读全文