当前位置: 首页 > 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

相关文章:

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

Kotlin 概述 Kotlin 由 JetBrains 开发&#xff0c;是一种在 JVM&#xff08;Java 虚拟机&#xff09;上运行的静态类型编程语言 Kotlin 旨在提高开发者的编码效率和安全性&#xff0c;同时保持与 Java 的高度互操作性 Kotlin 是 Android 应用开发的首选语言&#xff0c;也可…...

CSS display有几种属性值

在 CSS 中&#xff0c;display 属性是控制元素布局和渲染方式的核心属性之一。它有多种属性值&#xff0c;每个值都决定了元素在文档流中的表现形式。以下是 display 的主要属性值分类及说明&#xff1a; 1. 块级和行内布局 块级元素 (block) 特性&#xff1a;独占一行&…...

【后端】【UV】【Django】 `uv` 管理的项目中搭建一个 Django 项目

&#x1f680; 一步步搭建 Django 项目&#xff08;适用于 uv pyproject.toml 项目结构&#xff09; &#x1f9f1; 第 1 步&#xff1a;初始化一个 uv 项目&#xff08;如果还没建好&#xff09; uv init django-project # 创建项目&#xff0c;类似npm create vue⚙️ 第 …...

单片机设计_四轴飞行器(STM32)

四轴飞行器&#xff08;STM32&#xff09; 想要更多项目私wo!!! 一、系统简介 四轴飞行器是一种通过四个旋翼产生的升力实现飞行的无人机&#xff0c;其核心控制原理基于欧拉角动力学模型。四轴飞行器通过改变四个电机的转速来实现六自由度控制&#xff08;前后、左右、上下…...

kafka配置SASL_PLAINTEXT简单认证

Kafka ZooKeeper 开启 SASL_PLAINTEXT 认证&#xff08;PLAIN机制&#xff09;最全实战教程 &#x1f4a1; 本教程将手把手教你如何为 Kafka 配置基于 SASL_PLAINTEXT PLAIN 的用户名密码认证机制&#xff0c;包含 Kafka 与 ZooKeeper 的全部配置&#xff0c;适合入门。 &…...

PostgreSQL简单使用

一、PostgreSQL概念 特点 开源与自由 标准符合性 数据类型丰富 事务与并发 扩展性 安全性 优势 高性能 高可用性 灵活性 社区支持 成本效益 PostgreSQL结构 多层逻辑结构 第一层&#xff1a;实例&#xff08;xxx.xxx.xxx.xxx…...

【Spring Boot】配置实战指南:Properties与YML的深度对比与最佳实践

目录 1.前言 2.正文 2.1配置文件的格式 2.2properties 2.2.1基础语法 2.2.2value读取配置文件 2.2.3缺点 2.3yml 2.3.1基础语法 2.3.2配置不同数据类型 2.3.3配置读取 2.3.4配置对象和集合 2.3.5优缺点 2.4综合练习&#xff1a;验证码案例 2.4.1分析需求 2.4.2…...

算法优选系列(9.BFS 解决拓扑排序)

目录 拓扑排序简介&#xff1a; ​编辑 课程表&#xff08;medium&#xff09;&#xff1a; 课程表II&#xff08;medium&#xff09;: 火星词典&#xff08;hard&#xff09;&#xff1a; 拓扑排序简介&#xff1a; 有向无环图&#xff08;DAG图&#xff09; 如上图每条边…...

(1)Java 17/18/19 新特性面试题

Java 17/18/19 新特性面试题 &#x1f680; 掌握前沿技术&#xff0c;成为顶尖 Java 工程师 1️⃣ Java 17/18/19 新特性价值点 &#x1f449; 点击展开题目 Java 17/18/19新特性中&#xff0c;你认为最有价值的是哪些&#xff1f;请结合实际场景说明 密封类(Sealed Classes…...

LAN(局域网)和WAN(广域网)

你的问题非常清晰&#xff01;我来用一个直观的比喻实际拓扑图帮你彻底理解LAN&#xff08;局域网&#xff09;和WAN&#xff08;广域网&#xff09;如何协同工作&#xff0c;以及路由器在其中的位置。你可以把整个网络想象成一座城市&#xff1a; 1. 比喻&#xff1a;城市交通…...

【Java高阶面经:微服务篇】7. 1秒响应保障:超时控制如何成为高并发系统的“救火队长”?

一、全链路超时建模:从用户需求到系统分解 1.1 端到端时间预算分配 黄金公式: 用户期望响应时间 = 网络传输时间 + 服务处理时间 + 下游调用时间 + 缓冲时间典型分配策略(以1秒目标为例): 环节时间预算优化目标客户端渲染100ms骨架屏(Skeleton)预渲染边缘节点(CDN)…...

力扣周赛置换环的应用,最少交换次数

置换环的基本概念 置换环是排列组合中的一个概念&#xff0c;用于描述数组元素的重排过程。当我们需要将一个数组转换为另一个数组时&#xff0c;可以把这个转换过程分解为若干个 “环”。每个环代表一组元素的循环交换路径。 举个简单例子 假设原数组 A [3, 2, 1, 4]&…...

大语言模型 12 - 从0开始训练GPT 0.25B参数量 MiniMind2 补充 训练开销 训练步骤 知识蒸馏 LoRA等

写在前面 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是目前最广泛应用的大语言模型架构之一&#xff0c;其强大的自然语言理解与生成能力背后&#xff0c;是一个庞大而精细的训练流程。本文将从宏观到微观&#xff0c;系统讲解GPT的训练过程&#xff0c;…...

hgdbv9创建plpython3u插件后无法使用该插件创建函数

文章目录 环境症状问题原因解决方案 环境 系统平台&#xff1a;银河麒麟 &#xff08;X86_64&#xff09; 版本&#xff1a;9.0 症状 此问题在如下版本和安装环境出现&#xff1a; 安装包&#xff1a; hgdb-ee-9.0.1.000-build2401091440-28098d3-linux.x86_64.binOS版本&…...

SQLMesh 宏操作符详解:@IF 的条件逻辑与高级应用

SQLMesh 的 IF 宏提供了一种在 SQL 查询中嵌入条件逻辑的方法&#xff0c;允许根据运行时条件动态调整查询结构。本文深入探讨 IF 的语法、使用场景及实际案例&#xff0c;帮助开发者构建更灵活、可维护的 SQL 工作流。 1. IF 宏简介 IF 是 SQLMesh 提供的条件逻辑宏&#xff…...

nt!MiRemovePageByColor函数分析之脱链和刷新颜色表

第0部分&#xff1a;背景 PFN_NUMBER FASTCALL MiRemoveZeroPage ( IN ULONG Color ) { ASSERT (Color < MmSecondaryColors); Page FreePagesByColor[Color].Flink; if (Page ! MM_EMPTY_LIST) { // // Remove the first entry on the zeroe…...

【爬虫】12306自动化购票

上文&#xff1a; 【爬虫】12306查票-CSDN博客 下面是简单的自动化进行抢票&#xff0c;只写到预定票&#xff0c;没有写完登陆&#xff0c; 跳出登陆后与上述代码同理修改即可。 感觉xpath最简单&#xff0c;复制粘贴&#xff1a; 还有很多写法&#xff1a; 官网地址&#…...

不同消息队列保证高可用实现方案

消息队列的高可用性&#xff08;High Availability, HA&#xff09;是分布式系统中的核心需求&#xff0c;不同消息队列通过多种技术手段实现高可用。以下是主流消息队列的高可用实现方案及对比&#xff1a; 一、Apache Kafka 副本机制&#xff08;Replication&#xff09; 每个…...

【Django系统】Python+Django携程酒店评论情感分析系统

Python Django携程酒店评论情感分析系统 项目概述 这是一个基于 Django 框架开发的酒店评论情感分析系统。系统使用机器学习技术对酒店评论进行情感分析&#xff0c;帮助酒店管理者了解客户反馈&#xff0c;提升服务质量。 主要功能 评论数据导入&#xff1a;支持导入酒店…...

spring cloud alibaba-Geteway详解

spring cloud alibaba-Gateway详解 Gateway介绍 在 Spring Cloud Alibaba 生态系统中&#xff0c;Gateway 是一个非常重要的组件&#xff0c;用于构建微服务架构中的网关服务。它基于 Spring Cloud Gateway 进行扩展和优化&#xff0c;提供了更强大的功能和更好的性能。 Gat…...

c#中添加visionpro控件(联合编程)

vs添加vp控件 创建窗体应用 右键选择项 点击确定 加载CogAcqfifoTool工具拍照 设置参数保存.vpp 保存为QuickBuild或者job, ToolBlock 加载保存的acq工具 实例化相机工具类 //引入命名空间 using Cognex.VisionPro; //实例化一个相机工具类 CogAcqFifoTool cogAcqFifoTool n…...

性能测试-mysql监控

mysql常用监控指标 慢查询sql 慢查询&#xff1a;指执行速度低于设置的阀值的sql语句 作用&#xff1a;帮助定位查询速度较慢的sql语句&#xff0c;方便更好的优化数据库系统的性能 开启mysql慢查询日志 参数说明&#xff1a; slow_query_log:慢查询日志开启状态【on&#xf…...

游戏引擎学习第301天:使用精灵边界进行排序

回顾并为今天的内容做准备 昨天&#xff0c;我们解决了一些关于排序的问题&#xff0c;这对我们清理长期存在的Z轴排序问题很有帮助。这个问题我们一直想在开始常规游戏代码之前解决。虽然不确定是否完全解决了问题&#xff0c;但我们提出了一个看起来合理的排序标准。 有两点…...

CSS attr() 函数详解

attr() 是 CSS 中的一个函数&#xff0c;用于获取 HTML 元素的属性值并在样式中使用。虽然功能强大&#xff0c;但它的应用有一些限制和注意事项。 基本语法 element::pseudo-element {property: attr(attribute-name); } 可用场景 1. 在伪元素的 content 属性中使用&#…...

【AI生成PPT】使用ChatGPT+Overleaf自动生成学术论文PPT演示文稿

【AI生成PPT】使用ChatGPTOverleaf自动生成学术论文PPT演示文稿 文章摘要&#xff1a;使用ChatGPTBeamer自动生成学术论文PPT演示文稿​​Beamer​​是什么Overleaf编辑工具ChatGPT生成Beamer Latex代码论文获取prompt设计 生成结果 文章摘要&#xff1a; 本文介绍了一种高效利…...

流复备机断档处理

文章目录 环境症状问题原因解决方案 环境 系统平台&#xff1a;UOS&#xff08;海光&#xff09;,UOS &#xff08;飞腾&#xff09;,UOS&#xff08;鲲鹏&#xff09;,UOS&#xff08;龙芯&#xff09;,UOS &#xff08;申威&#xff09;,银河麒麟svs&#xff08;X86_64&…...

Linux 安装 pytorch+cuda+gpu 大模型开发环境过程记录

Linux 安装 pytorchcudagpu 大模型开发环境过程记录 2025-05-17 本文可用于生产环境&#xff0c;用于大模型训练开发运行。 1. 确定 OS 架构 # cat /etc/os-release NAME"Ubuntu" VERSION"20.04.6 LTS (Focal Fossa)" # uname -m x86_642. 查看磁盘空间…...

局部放大maya的视图HUD文字大小的方法

一、问题描述&#xff1a; 有网友问&#xff1a;有办法局部放大maya的字体吗比如hud中currenttime打开之后画面右下角有个frame 想放大一下能做到吗&#xff1f; 在 Maya 中&#xff0c;可以通过自定义 HUD&#xff08;Heads-Up Display&#xff09;元素的字体大小来局部放大特…...

数学复习笔记 16

前言 例题真是经典。 background music 《青春不一样》 2.28 算一个行列式&#xff0c;算出来行列式不等于零&#xff0c;这表示矩阵式可逆的。但是这个算的秩是复合的&#xff0c;感觉没啥好办法了&#xff0c;我直接硬算了&#xff0c;之后再看解析积累好的方法。算矩阵…...

初识Linux · NAT 内网穿透 内网打洞 代理

目录 前言&#xff1a; 内网穿透和打洞 NAPT表 内网穿透 内网打洞 正向/反向代理 前言&#xff1a; 本文算是网络原理的最后一点补充&#xff0c;为什么说是补充呢&#xff0c;因为我们在前面第一次介绍NAT的时候详细介绍的是报文从子网到公网&#xff0c;却没有介绍报文…...