kotlin 内置函数对数组进行各种操作
以下是一些常见的用法示例:
- plus() 函数将两个数组合并成一个数组。plus() 函数是 Kotlin 标准库中的一个扩展函数,可以用于合并两个同类型的数组。
fun main() {val array1 = arrayOf(1, 2, 3)val array2 = arrayOf(4, 5, 6)val mergedArray = array1.plus(array2)println(mergedArray.contentToString()) // 输出 [1, 2, 3, 4, 5, 6] }
- 使用 minus() 函数从数组中移除指定元素,并返回新的数组
val array = arrayOf(1, 2, 3, 4, 5)
val newArray = array.minus(3) // 移除元素 3
println(newArray.contentToString()) // 输出 [1, 2, 4, 5]
- 使用 slice() 函数获取数组中指定位置的元素,并返回新的数组:
val array = arrayOf(1, 2, 3, 4, 5)
val slicedArray = array.slice(1..3) // 获取索引为 1 到 3 的元素
println(slicedArray.contentToString()) // 输出 [2, 3, 4]
- 使用 chunked() 函数将数组分成指定大小的块,并返回一个列表:
val array = arrayOf(1, 2, 3, 4, 5)
val chunkedList = array.chunked(2) // 将数组分成大小为 2 的块
println(chunkedList) // 输出 [[1, 2], [3, 4], [5]]
- 使用 distinct() 函数获取数组中不同的元素,并返回新的数组
val array = arrayOf(1, 2, 2, 3, 3, 4, 5)
val distinctArray = array.distinct() // 获取不同的元素
println(distinctArray.contentToString()) // 输出 [1, 2, 3, 4, 5]
find():用于在数组中查找符合指定条件的元素,并返回该元素
val numbers = listOf(1, 2, 3, 4, 5)val result = numbers.find { it % 2 == 0 }println(result) // 输出:2
- joinToString():用于将数组中的元素连接成字符串,并返回该字符串。
fun main() { val array = arrayOf("Hello", "World") val result = array.joinToString() println(result) // 输出 "HelloWorld"
}
- map():用于根据指定规则将数组中的元素进行映射,并返回一个新的数组。
fun String.toUpperCase(): String { return this.toUpperCase()
} val strings = listOf("apple", "banana", "cherry") // 使用自定义的 toUpperCase() 函数将字符串转换为大写
val upperCaseStrings = strings.map { it.toUpperCase() } println(upperCaseStrings) // 输出 [APPLE, BANANA, CHERRY]
- sum():用于计算数组中所有元素的和。
fun main() { val numbers = listOf(1, 2, 3, 4, 5) // 使用 sum() 函数计算所有数字的总和 val sum = numbers.sum() println("Sum of numbers: $sum") // 输出 "Sum of numbers: 15"
}
- first():返回第一个元素
fun main() { val numbers = listOf(1, 2, 3, 4, 5) // 使用 first() 函数获取第一个数字 val firstNumber = numbers.first() println("First number: $firstNumber") // 输出 "First number: 1"
}
- last():返回最后一个元素
fun main() { val numbers = listOf(1, 2, 3, 4, 5) // 使用 last() 函数获取最后一个数字 val lastNumber = numbers.last() println("Last number: $lastNumber") // 输出 "Last number: 5"
}
- firstOrNull():返回第一个元素,如果数组为空则返回null
- lastOrNull():返回最后一个元素,如果数组为空则返回null
- getOrNull():根据下标获取元素,如果下标越界则返回null
val map = mapOf("apple" to 1, "banana" to 2, "orange" to 3) // 获取键为 "apple" 的值,如果不存在则返回 null
val appleValue = map.getOrNull("apple")
println("Apple value: $appleValue") // 输出 "Apple value: 1" // 获取键为 "grape" 的值,如果不存在则返回 null
val grapeValue = map.getOrNull("grape")
println("Grape value: $grapeValue") // 输出 "Grape value: null"
- take():获取前n个元素
-
fun main() { val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) // 使用 take() 函数获取前三个数字 val result = numbers.take(3) // 遍历并打印结果 for (num in result) { println(num) } } 我们使用循环遍历并打印结果。输出将为:1 2 3
- takeLast():获取后n个元素
-
fun main() { val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) // 使用 takeLast() 函数获取最后三个数字 val result = numbers.takeLast(3) // 遍历并打印结果 for (num in result) { println(num) } } 输出将为:7 8 9
- drop():去除前n个元素
-
val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)// 使用 drop() 函数删除前三个数字val result = numbers.drop(3)// 打印删除元素后的新序列println(result) // 输出 [4, 5, 6, 7, 8, 9, 10]
- dropLast():去除后n个元素
-
var numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, // 使用 dropLast() 函数删除最后三个数字并将结果分配回原始列表 numbers = numbers.dropLast(3) // 打印修改后的原始列表 println(numbers) // 输出 [1, 2, 3, 4, 5, 6, 7]
- filter():根据条件筛选元素
-
fun main() { val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) // 使用 filter() 函数筛选出偶数并打印 val evenNumbers = numbers.filter { it % 2 == 0 } println(evenNumbers) // 输出:[2, 4, 6, 8, 10] }
- map():对每个元素执行指定操作
-
fun main() { // 创建一个包含字符串的列表 val strings = listOf("apple", "banana", "orange") // 使用 map() 函数将字符串转换为它们的长度,并打印结果 val lengths = strings.map { it.length } println(lengths) // 输出:[6, 6, 5] }
- flatMap():对每个元素执行指定操作,并将结果合并到一个列表中
-
fun main() { val listOfLists = listOf(listOf(1, 2, 3), listOf(4, 5, 6), listOf(7, 8, 9)) val flattenedList = listOfLists.flatMap { it } println(flattenedList) // 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9] }
- distinct():去除重复元素
fun main() { val numbers = listOf(1, 2, 2, 3, 4, 4, 5) val uniqueNumbers = numbers.distinct() println(uniqueNumbers) // 输出了 [1, 2, 3, 4, 5] }
distinctBy():根据指定条件去除重复元素
fun main() { val items = listOf("apple", "banana", "cherry", "date", "elderberry") val distinctItems = items.distinctBy { it.length } println(distinctItems) // 输出了 [apple, banana, cherry, date]
}
- contains():判断数组是否包含指定元素
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val containsThree = numbers.contains(3) println(containsThree) // 输出:true
}
- indexOf():获取指定元素的下标,如果不存在则返回-1
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val index = numbers.indexOf(3) println("The index of 3 is: $index") // 输出:The index of 3 is: 2
}
我们打印出结果,显示数字 3 在列表中的位置。请注意,indexOf() 函数返回的是该元素在列表中的位置,索引从 0 开始。
- lastIndexOf():获取指定元素的最后一个下标,如果不存在则返回-1
fun main() { val numbers = listOf(1, 2, 3, 4, 5, 3) val lastIndex = numbers.lastIndexOf(3) println("The last index of 3 is: $lastIndex") // 输出:The last index of 3 is: 5 }
- partition():根据条件分成两个数组
-
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val (evenNumbers, oddNumbers) = numbers.partition { it % 2 == 0 } println("Even numbers: $evenNumbers") // 输出:[2, 4] println("Odd numbers: $oddNumbers") // 输出:[1, 3, 5] }
- groupBy():根据条件将元素分组到不同的数组中
-
fun main() { val items = listOf("apple", "banana", "cherry", "date", "elderberry") val itemGroups = items.groupBy { it.length } for ((key, value) in itemGroups) { println("Items with length $key: $value") } }答案输出: Items with length 5: [apple] Items with length 6: [banana, cherry] Items with length 4: [date] Items with length 10: [elderberry]
- sum():计算元素的总和
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val sum = numbers.sum() println("The sum of the numbers is: $sum") // 输出:The sum of the numbers is: 15 }
- average():计算元素的平均值
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val average = numbers.average() println("The average of the numbers is: $average") // 输出:The average of the numbers is: 3.0 }
- max():获取最大元素
-
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val maxNumber = numbers.max() println("The maximum number is: $maxNumber") // 输出:The maximum number is: 5 }
- min():获取最小元素
- reduce():对元素进行累加
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val result = numbers.reduce { acc, num -> acc + num } println("The sum of the numbers is: $result") // 输出:The sum of the numbers is: 15
}
- fold():对元素进行累加,并可以指定初始值
-
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val result = numbers.fold(0) { acc, num -> acc + num } println("The sum of the numbers is: $result") // 输出:The sum of the numbers is: 15 }
- forEach():遍历元素并执行指定操作
fun main() { val numbers = listOf(1, 2, 3, 4, 5) numbers.forEach { println(it) } } 将会输出以下内容:1 2 3 4 5
- forEachIndexed():遍历元素并获取索引,执行指定操作
fun main() { val numbers = listOf(1, 2, 3, 4, 5) numbers.forEachIndexed { index, num -> println("Index $index: $num") } }将会输出以下内容:Index 0: 1 Index 1: 2 Index 2: 3 Index 3: 4 Index 4: 5
- zip():将两个数组合并成一个新数组,每个元素都是一对。
fun main() { val list1 = listOf("a", "b", "c") val list2 = listOf(1, 2, 3) val zippedList = list1.zip(list2) { a, b -> Pair(a, b) } zippedList.forEach { println(it) } }将会输出以下内容:复制代码 Pair(a, 1) Pair(b, 2) Pair(c, 3)
- all():判断所有元素是否都满足指定条件
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val allPositive = numbers.all { it > 0 } println("All numbers are positive: $allPositive") // 输出:All numbers are positive: true }
- any():判断是否有任何元素满足指定条件
fun main() { val numbers = listOf(1, 2, -3, 4, 5) val hasNegative = numbers.any { it < 0 } println("Numbers have negative value: $hasNegative") // 输出:Numbers have negative value: true }
- none():判断是否所有元素都不满足指定条件
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val hasNegative = numbers.none { it < 0 } println("Numbers have no negative value: $hasNegative") // 输出:Numbers have no negative value: true }
- associate():将每个元素转化为Pair对象,并返回一个Map
fun main() { val numbers = listOf(1, 2, 3, 4, 5) val associatedMap = numbers.associate { it to it } println("Associated map: $associatedMap") }输出 Associated map: {1=1, 2=2, 3=3, 4=4, 5=5}
- associateBy():根据指定条件生成key,并将元素转化为value,返回一个Map
fun main() { val people = listOf("David", "Bob", "Charlie", "Alice")val associatedMap = people.associateBy { it.length } println("Associated map: $associatedMap") }Associated map: {5=Alice, 3=Bob, 7=Charlie}
- associateWith():将每个元素转化为key,并根据指定条件生成value,返回一个Map
-
val people = listOf("Alice", "Bob", "Charlie", "David") val associatedMap = people.associateWith { it.length } println("Associated map: $associatedMap") Associated map: {Alice=5, Bob=3, Charlie=7, David=5}
- flatMapTo():将每个元素执行指定操作,并将结果合并到一个指定类型的列表中
-
val numbers = listOf(1, 2, 3, 4, 5) val flattened = numbers.flatMapTo(HashSet<Int>()) { setOf(it * 2) }println("Flattened list: $flattened")
- mapTo():将每个元素执行指定操作,并将结果合并到一个指定类型的列表中
-
val numbers = listOf(1, 2, 3, 4, 5) val squaredNumbers = numbers.mapTo(ArrayList<Int>()) { it * it } println("Squared numbers: $squaredNumbers")输出结果:Squared numbers: [1, 4, 9, 16, 25]
- reduceIndexed():对元素进行累加,并可以访问索引
val numbers = listOf(1, 2, 3, 4, 5)val result = numbers.reduceIndexed { index, acc, value ->if (index % 2 == 0) {acc + value} else {acc - value} }println("Result: $result") 输出结果将会是:Result: 3
- foldIndexed():对元素进行累加,并可以访问索引,并可以指定初始值
val numbers = listOf(1, 2, 3, 4, 5)val result = numbers.foldIndexed(0) { index, acc, value ->if (index % 2 == 0) {acc + value} else {acc - value} }println("Result: $result")输出结果将会是:Result: 3
相关文章:
kotlin 内置函数对数组进行各种操作
以下是一些常见的用法示例: plus() 函数将两个数组合并成一个数组。plus() 函数是 Kotlin 标准库中的一个扩展函数,可以用于合并两个同类型的数组。 fun main() {val array1 arrayOf(1, 2, 3)val array2 arrayOf(4, 5, 6)val mergedArray array1.plu…...
力扣labuladong——一刷day54
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣1660. 纠正二叉树二、力扣100. 相同的树三、力扣572. 另一棵树的子树四、力扣101. 对称二叉树 前言 判断树是否相等,就直接遍历就可以。判断…...

3、MSF使用
文章目录 一、利用ms17-010漏洞对靶机执行溢出攻击二、后渗透模块meterpreter的使用 一、利用ms17-010漏洞对靶机执行溢出攻击 分别输入以下命令,使用ms17_010_eternalblue模块对目标机的ms17-010漏洞进行利用: use exploit/windows/smb/ms17_010_eter…...

34970A 数据采集 / 数据记录仪开关单元
34970A 数据采集 / 数据记录仪开关单元 产品综述: Keysight 34970A 数据采集/数据记录仪开关单元由一个 3 插槽主机和一个内置的 6 1/2 位数字万用表组成。每个通道可以单独配置,以测量 11 种不同功能之一,这样既不会增加成本,也…...

BUUCTF刷题之路-web-[GXYCTF2019]Ping Ping Ping1
启动环境后,是一个简简单单的页面: 看样子是能够触发远程执行漏洞的。尝试下ping 127.0.0.1,如果有回显说明我们的想法是对的。 最近才学习的nc反弹shell。想着是否能用nc反弹shell的办法。控制服务器然后输出flag呢?于是我测试下…...

一、深入简出串口(USRT)通信——基本概念。
一、前言 串口到底是什么?简单来说一句话就可以解释,串口就是一种通信协议。 看到这里可能大家会觉得你这不是放屁么,说了跟没说一样。所以这里做前言来描述,大家要先对通信协议有一个下意识地认识才能在学习串口的时候不至于迷茫…...

采用connector-c++ 8.0操作数据库
1.下载最新的Connector https://dev.mysql.com/downloads/connector/cpp/,下载带debug的库。 解压缩到本地,本次使用的是带debug模式的connector库: 注:其中mysqlcppconn与mysqlcppconn8的区别是: 2.在cmakelist…...
【Java数据结构 -- 时间和空间复杂度】
时间和空间复杂度 1. 算法效率2. 时间复杂度2.1 时间复杂度的概念2.2 大O的渐进表示法2.3 推导大O阶方法2.4 常见时间复杂度计算举例例1例2例3例4 计算 bubbleSort的时间复杂度例5 计算binarySearch的时间复杂度?例6 计算阶乘递归factorial的时间复杂度?…...

【每日一题】1457. 二叉树中的伪回文路径-2023.11.25
题目: 1457. 二叉树中的伪回文路径 给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。 请你返回从根到叶子节点的所有路…...

能让PDF看起来像是扫描件的Look Scanned
什么是 Look Scanned ? Look Scanned 是一个能够让 PDF 看起来就像是扫描件一样的纯前端网站。你再也不需要麻烦地打印之后扫描了,你所需要的就是鼠标点几下。 这是个挺有意思的软件,但是老苏不确定什么场景下会用到这个软件,如果不想自己搭…...

RT-DETR 更换损失函数之 SIoU / EIoU / WIoU / Focal_xIoU
文章目录 更换方式CIoUDIoUEIoUGIoUSIoUWIoUFocal_CIoUFocal_DIoUFocal_EIoUFocal_GIoUFocal_SIoU提示更换方式 第一步:将ultralytics/ultralytics/utils/metrics.py文件中的bbox_iou替换为如下的代码:class...
代码随想录算法训练营第四十六天 | 139.单词拆分,多重背包,背包问题总结
目录 139.单词拆分 多重背包 背包问题总结 01背包 完全背包 多重背包 139.单词拆分 题目链接:139. 单词拆分 不要求字典中的单词全部使用,但是要求拆分的单词拆分成的每一个子串都是字典中的单词。 (1)dp[ i ] 表示前 i 个字符组成…...

opencv-Canny 边缘检测
Canny边缘检测是一种经典的图像边缘检测算法,它在图像中找到强度梯度的变化,从而识别出图像中的边缘。Canny边缘检测的优点包括高灵敏度和低误检率。 在OpenCV中,cv2.Canny() 函数用于执行Canny边缘检测。 基本语法如下: edges…...

案例023:基于微信小程序的童装商城的设计与实现
文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…...
Ansible的循环:loop,with_<lookup>和until
环境 管理节点:Ubuntu 22.04控制节点:CentOS 8Ansible:2.15.6 循环的方法 loopwith_<lookup>until 用这几种方式都可以实现循环。其中, loop 是推荐的用法,在很多时候能够替换 with_<lookup> 。 loop…...
点云 surface 方法总结
点云的表面方法是指通过点云数据来估计和重建物体或场景的表面几何形状。下面总结了几种常见的点云表面方法: 三角化:三角化是最常用的点云表面重建方法之一。它将点云中的点连接成三角形网格,从而重建出物体或场景的表面。常见的三角化算法…...

深入探索Linux文件系统:属性、路径与隐藏之谜
🎥 屿小夏 : 个人主页 🔥个人专栏 : Linux系统理论 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言🌤️文件的组成☁️文件属性☁️文件内容☁️注意事项 🌤️路…...

梯度详解与优化实战
什么是梯度 对所有自变量求偏微分构成的向量,它是一个向量(有大小和函数值增长方向) 导数是一个标量 找最小值点坐标的案例 import torchimport numpy as np import matplotlib.pyplot as plt def himmelblau(x):return (x[0]**2x[1]-11)…...

OSG编程指南<十二>:OSG二三维文字创建及文字特效
1、字体基础知识 适当的文字信息对于显示场景信息是非常重要的。在 OSG 中,osgText提供了向场景中添加文字的强大功能,由于有第三方插件 FreeType 的支持,它完全支持TrueType 字体。很多人可能对 FreeType 和 TrueType 还不太了解,…...

visionOS空间计算实战开发教程Day 6 拖拽和点击
在之前的学习中我们在空间中添加了3D模型,但在初始摆放后就无法再对其进行移动或做出修改。本节我们在Day 5显示和隐藏的基础上让我们模型可以实现拖拽效果,同时对纯色的立方体实现点击随机换色的功能。 首先是入口文件,无需做出改变…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...

自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...

【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...