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

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.xdnf.cn/news/8008.html

相关文章:

  • 漏洞修复的两种核心方法
  • Chord Crossing_abc405分析与解答
  • 第21天-pyttsx3语音播放功能
  • js逆向练习 客户端的加密数据的逆向
  • 8.数据驱动的决策分析与可视化实践
  • Open3D 统计滤波器
  • RK3588 USB-OTG 功能使用记录
  • MAC系统安装node版本管理工具nvm
  • 条件随机场 (CRF) 原理及其在语义分割中的应用
  • 关于 Web 安全实践:4. 文件上传功能的风险分析与防护
  • 使用泛型服务基类简化Entity Framework对数据库访问逻辑
  • 基于JDBC的信息管理系统,那么什么是JDBC呢?什么又是DAO类?
  • Python输出与输入
  • windows服务器部署jenkins工具(二)
  • 在linux部署定时执行Kettle任务
  • 领麦微红外测温传感器:即热式饮水机测温应用
  • I.MX6U Mini开发板通过GPIO口测试光敏传感器
  • 无人机电子防抖技术要点概述!
  • 无人机集成毫米波雷达与双目视觉的融合感知系统深度解析
  • 全碳化硅功率模块开关瞬态特性及损耗研究
  • Java学习教程(附电子书资料50+册)
  • 多模态大模型
  • 将YOLO训练进程放至后台的方法-nohup
  • Oracle BUFFER CACHE内存不足的优化思路
  • 【信息系统项目管理师】第13章:项目资源管理 - 38个经典题目及详解
  • SEO关键词优化与长尾词布局
  • Powershell及命令行文章合集(不定期更新)
  • [Docker排查] 镜像拉取/容器启动/网络不通?Docker常见错误与解决方案
  • ERP 与 WMS 对接深度解析:双视角下的业务与技术协同
  • Linux系统之----文件及缓冲区