Kotlin编程语言(八)——Array、List和Map


在 Kotlin 中,Array、List 和 Map 是三种常用的数据结构,每种数据结构都有其独特的特性和使用场景。下面详细介绍了这些数据结构及其相关操作。

1. 数组(Array)

数组是一种固定大小的线性数据结构,其中的元素具有相同的类型,并且可以通过索引访问。

定义和初始化

  • 使用 arrayOf 函数
val array1 = arrayOf(1, 2, 3, 4, 5)
  • 使用 Array 构造函数
  val array2 = Array(5) { i -> i * 2 }  // 创建一个包含 5 个元素的数组,每个元素的值为索引的两倍
  • 类型指定
val array3: Array<Int> = arrayOf(1, 2, 3, 4, 5)

访问和修改

  • 访问元素
val firstElement = array1[0]
  • 修改元素
  array1[0] = 10

常用方法

  • 遍历数组
  for (element in array1) {
      println(element)
  }
  • 获取数组长度

    val length = array1.size
    
  • 转换为列表

    val list = array1.toList()
    

2. 列表(List)

列表是一种动态大小的线性数据结构,可以包含不同类型的元素,并且可以通过索引访问。

定义和初始化

  • 不可变列表(List
  val list1 = listOf(1, 2, 3, 4, 5)
  • 可变列表(MutableList
  val mutableList1 = mutableListOf(1, 2, 3, 4, 5)
  • 类型指定
  val list2: List<Int> = listOf(1, 2, 3, 4, 5)
  val mutableList2: MutableList<Int> = mutableListOf(1, 2, 3, 4, 5)

访问和修改

  • 访问元素
  val firstElement = list1[0]
  • 修改元素(仅限可变列表)
  mutableList1[0] = 10
  • 添加元素(仅限可变列表)
  mutableList1.add(6)
  • 删除元素(仅限可变列表)
  mutableList1.remove(1)

常用方法

  • 遍历列表
  for (element in list1) {
      println(element)
  }
  • 获取列表长度
  val length = list1.size
  • 转换为数组
  val array = list1.toTypedArray()

3. 映射(Map)

映射是一种键值对(key-value pair)的数据结构,其中每个键都是唯一的。

定义和初始化

  • 不可变映射(Map
  val map1 = mapOf("one" to 1, "two" to 2, "three" to 3)
  • 可变映射(MutableMap
  val mutableMap1 = mutableMapOf("one" to 1, "two" to 2, "three" to 3)
  • 类型指定
  val map2: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)
  val mutableMap2: MutableMap<String, Int> = mutableMapOf("one" to 1, "two" to 2, "three" to 3)

访问和修改

  • 访问元素
  val value = map1["one"]
  • 修改元素(仅限可变映射)
  mutableMap1["one"] = 10
  • 添加元素(仅限可变映射)
  mutableMap1["four"] = 4
  • 删除元素(仅限可变映射)
  mutableMap1.remove("one")

常用方法

  • 遍历映射
  for ((key, value) in map1) {
      println("$key -> $value")
  }
  • 获取映射大小
  val size = map1.size
  • 获取所有键
  val keys = map1.keys
  • 获取所有值
  val values = map1.values

4. 数组、列表和映射的转换

  • 数组转列表:
val listFromArray = array1.toList()
  • 列表转数组:
val arrayFromList = list1.toTypedArray()
  • 列表转映射:
val mapFromList = list1.mapIndexed { index, value -> index.toString() to value }.toMap()

5. 特殊类型的数组

Kotlin 还提供了针对基本类型的优化数组类型,如 IntArrayDoubleArray 等,这些数组类型在性能上优于 Array<T>

定义和初始化

  • IntArray
  val intArray = intArrayOf(1, 2, 3, 4, 5)
  • DoubleArray
  val doubleArray = doubleArrayOf(1.0, 2.0, 3.0, 4.0, 5.0)

访问和修改

  • 访问元素
  val firstElement = intArray[0]
  • 修改元素
  intArray[0] = 10

总结

  • 数组:固定大小,通过索引访问,适用于已知大小的数据。
  • 列表:动态大小,可以通过索引访问,适用于大小不确定的数据。
    • 不可变列表:一旦创建,不能修改。
    • 可变列表:可以添加、删除和修改元素。
  • 映射:键值对数据结构,键是唯一的,适用于需要快速查找的数据。
    • 不可变映射:一旦创建,不能修改。
    • 可变映射:可以添加、删除和修改元素。
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐