当前位置: 首页 > article >正文

Kotlin 极简小抄 P9 - 数组(数组的创建、数组元素的访问与修改、数组遍历、数组操作、多维数组、数组与可变参数)

Kotlin 概述

  1. Kotlin 由 JetBrains 开发,是一种在 JVM(Java 虚拟机)上运行的静态类型编程语言

  2. Kotlin 旨在提高开发者的编码效率和安全性,同时保持与 Java 的高度互操作性

  3. Kotlin 是 Android 应用开发的首选语言,也可以与 Java 一样用于服务器端开发


一、数组的创建

1、基本类型数组创建
  1. 使用工厂函数创建
val byteArray: ByteArray = byteArrayOf(1, 2, 3)
val shortArray: ShortArray = shortArrayOf(1, 2, 3)
val intArray: IntArray = intArrayOf(1, 2, 3)
val longArray: LongArray = longArrayOf(1L, 2L, 3L)val floatArray: FloatArray = floatArrayOf(1f, 2f, 3f)
val doubleArray: DoubleArray = doubleArrayOf(1.0, 2.0, 3.0)val charArray: CharArray = charArrayOf('a', 'b', 'c')val booleanArray: BooleanArray = booleanArrayOf(true, false, true)
// 使用工厂函数创建空数组val intArr1 = emptyArray<Int>()
// 创建指定大小的数组(元素初始化为 null)val intArr2 = arrayOfNulls<Int>(5)
  1. 使用构造函数创建
// 创建大小为 10 的数组,初始化为 0
val intArray1: IntArray = IntArray(10)
// 创建大小为 10 的数组,使用 lambda 表达式初始化
val intArray2: IntArray = IntArray(10) {it * 2
}
2、非基本类型数组创建
  1. 使用工厂函数创建
val stringArray: Array<String> = arrayOf("a", "b", "c")
// 使用工厂函数创建空数组val stringArr1 = emptyArray<String>()
// 创建指定大小的数组(元素初始化为 null)val stringArr2 = arrayOfNulls<String>(5)
  1. 使用构造函数创建
// 创建大小为 10 的数组,使用 lambda 表达式初始化val stringArray: Array<String> = Array(10) {"Hello, $it"
}

二、数组元素的访问与修改

  1. 使用方括号访问与修改
val intArray: IntArray = intArrayOf(1, 2, 3)println(intArray[0])intArray[0] = 10println(intArray[0])
# 输出结果1
10
  1. 使用 set 方法访问与修改
val intArray: IntArray = intArrayOf(1, 2, 3)println(intArray[0])intArray.set(0, 10)println(intArray[0])
# 输出结果1
10

三、数组遍历

  1. 使用 for 循环遍历
val numbers: IntArray = intArrayOf(1, 2, 3)for (number in numbers) {println(number)
}
# 输出结果1
2
3
  1. 使用索引遍历
val numbers: IntArray = intArrayOf(1, 2, 3)for (i in numbers.indices) {println(numbers[i])
}
# 输出结果1
2
3
  1. 使用 withIndex 遍历
val numbers: IntArray = intArrayOf(1, 2, 3)for ((index, value) in numbers.withIndex()) {println("$index: $value")
}
# 输出结果0: 1
1: 2
2: 3
  1. 使用 forEach 遍历
val numbers: IntArray = intArrayOf(1, 2, 3)numbers.forEach { println(it) }
# 输出结果1
2
3
  1. 使用 forEachIndexed 遍历
val numbers: IntArray = intArrayOf(1, 2, 3)numbers.forEachIndexed { index, value ->println("$index: $value")
}
# 输出结果0: 1
1: 2
2: 3

四、数组操作

  1. 数组转换为 List
val numbers = intArrayOf(1, 2, 3, 4, 5)val list = numbers.toList()println(list)
# 输出结果[1, 2, 3, 4, 5]
  1. 数组切片
val numbers = intArrayOf(1, 2, 3, 4, 5)val slice = numbers.sliceArray(1..3)println(slice.contentToString())
# 输出结果[2, 3, 4]
  1. 数组过滤
val numbers = intArrayOf(1, 2, 3, 4, 5)val evens = numbers.filter { it % 2 == 0 }.toIntArray()println(evens.contentToString())
# 输出结果[2, 4]
  1. 数组映射
val numbers = intArrayOf(1, 2, 3, 4, 5)val squares = numbers.map { it * it }.toIntArray()println(squares.contentToString())
# 输出结果[1, 4, 9, 16, 25]
  1. 数组排序
val numbers = intArrayOf(3, 4, 5, 1, 2)// 升序
val sorted = numbers.sortedArray()println(sorted.contentToString())// 降序
val sortedDesc = numbers.sortedArrayDescending()println(sortedDesc.contentToString())
# 输出结果[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
  1. 数组查找
val numbers = intArrayOf(1, 2, 3, 4, 5)val firstEven = numbers.find { it % 2 == 0 }println(firstEven)val anyGreaterThan10 = numbers.any { it > 10 }println(anyGreaterThan10)
# 输出结果2
false

五、多维数组

  1. 创建二维数组
// 3 * 3 的二维数组,初始化为 0
val matrix = Array(3) { IntArray(3) }
  1. 初始化二维数组
val matrix = arrayOf(intArrayOf(1, 2, 3),intArrayOf(4, 5, 6),intArrayOf(7, 8, 9)
)println(matrix[1][0])
println(matrix[1][1])
println(matrix[1][2])
# 输出结果4
5
6

六、数组与可变参数

  • 使用 vararg 关键字表示可变参数,本质上就是数组
fun printAll(vararg messages: String) {for (m in messages) println(m)
}
printAll("Hello", "World", "Kotlin")val array = arrayOf("a", "b", "c")
printAll(*array)
# 输出结果Hello
World
Kotlin
a
b
c
http://www.lryc.cn/news/2383318.html

相关文章:

  • CSS display有几种属性值
  • 【后端】【UV】【Django】 `uv` 管理的项目中搭建一个 Django 项目
  • 单片机设计_四轴飞行器(STM32)
  • kafka配置SASL_PLAINTEXT简单认证
  • PostgreSQL简单使用
  • 【Spring Boot】配置实战指南:Properties与YML的深度对比与最佳实践
  • 算法优选系列(9.BFS 解决拓扑排序)
  • (1)Java 17/18/19 新特性面试题
  • LAN(局域网)和WAN(广域网)
  • 【Java高阶面经:微服务篇】7. 1秒响应保障:超时控制如何成为高并发系统的“救火队长”?
  • 力扣周赛置换环的应用,最少交换次数
  • 大语言模型 12 - 从0开始训练GPT 0.25B参数量 MiniMind2 补充 训练开销 训练步骤 知识蒸馏 LoRA等
  • hgdbv9创建plpython3u插件后无法使用该插件创建函数
  • SQLMesh 宏操作符详解:@IF 的条件逻辑与高级应用
  • nt!MiRemovePageByColor函数分析之脱链和刷新颜色表
  • 【爬虫】12306自动化购票
  • 不同消息队列保证高可用实现方案
  • 【Django系统】Python+Django携程酒店评论情感分析系统
  • spring cloud alibaba-Geteway详解
  • c#中添加visionpro控件(联合编程)
  • 性能测试-mysql监控
  • 游戏引擎学习第301天:使用精灵边界进行排序
  • CSS attr() 函数详解
  • 【AI生成PPT】使用ChatGPT+Overleaf自动生成学术论文PPT演示文稿
  • 流复备机断档处理
  • Linux 安装 pytorch+cuda+gpu 大模型开发环境过程记录
  • 局部放大maya的视图HUD文字大小的方法
  • 数学复习笔记 16
  • 初识Linux · NAT 内网穿透 内网打洞 代理
  • STM32接收红外遥控器的遥控信号