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显示和隐藏的基础上让我们模型可以实现拖拽效果,同时对纯色的立方体实现点击随机换色的功能。 首先是入口文件,无需做出改变…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
