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() 函数从数组中移除指定元素,并返回新的数组

Kotlin 复制代码
val array = arrayOf(1, 2, 3, 4, 5)
val newArray = array.minus(3) // 移除元素 3
println(newArray.contentToString()) // 输出 [1, 2, 4, 5]
  • 使用 slice() 函数获取数组中指定位置的元素,并返回新的数组:
Kotlin 复制代码
val array = arrayOf(1, 2, 3, 4, 5)
val slicedArray = array.slice(1..3) // 获取索引为 1 到 3 的元素
println(slicedArray.contentToString()) // 输出 [2, 3, 4]
  • 使用 chunked() 函数将数组分成指定大小的块,并返回一个列表:
Kotlin 复制代码
val array = arrayOf(1, 2, 3, 4, 5)
val chunkedList = array.chunked(2) // 将数组分成大小为 2 的块
println(chunkedList) // 输出 [[1, 2], [3, 4], [5]]
  • 使用 distinct() 函数获取数组中不同的元素,并返回新的数组
Kotlin 复制代码
val array = arrayOf(1, 2, 2, 3, 3, 4, 5)
val distinctArray = array.distinct() // 获取不同的元素
println(distinctArray.contentToString()) // 输出 [1, 2, 3, 4, 5]

find():用于在数组中查找符合指定条件的元素,并返回该元素

Kotlin 复制代码
val numbers = listOf(1, 2, 3, 4, 5)

val result = numbers.find { it % 2 == 0 }

println(result) // 输出:2
  • joinToString():用于将数组中的元素连接成字符串,并返回该字符串。
Kotlin 复制代码
fun main() {  
    val array = arrayOf("Hello", "World")  
    val result = array.joinToString()  
    println(result) // 输出 "HelloWorld"  
}
  • map():用于根据指定规则将数组中的元素进行映射,并返回一个新的数组。
Kotlin 复制代码
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():用于计算数组中所有元素的和。
Kotlin 复制代码
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():返回第一个元素
Kotlin 复制代码
fun main() {  
    val numbers = listOf(1, 2, 3, 4, 5)  
  
    // 使用 first() 函数获取第一个数字  
    val firstNumber = numbers.first()  
  
    println("First number: $firstNumber") // 输出 "First number: 1"  
}
  • last():返回最后一个元素
Kotlin 复制代码
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
Kotlin 复制代码
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个元素
Kotlin 复制代码
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个元素
Kotlin 复制代码
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个元素
Kotlin 复制代码
 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个元素
Kotlin 复制代码
                                                
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():根据条件筛选元素
Kotlin 复制代码
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():对每个元素执行指定操作
Kotlin 复制代码
fun main() {  
    // 创建一个包含字符串的列表  
    val strings = listOf("apple", "banana", "orange")  
  
    // 使用 map() 函数将字符串转换为它们的长度,并打印结果  
    val lengths = strings.map { it.length }  
    println(lengths)  // 输出:[6, 6, 5]  
}
  • flatMap():对每个元素执行指定操作,并将结果合并到一个列表中
Kotlin 复制代码
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():去除重复元素

    Kotlin 复制代码
    fun main() {  
        val numbers = listOf(1, 2, 2, 3, 4, 4, 5)  
      
        val uniqueNumbers = numbers.distinct()  
      
        println(uniqueNumbers) // 输出了 [1, 2, 3, 4, 5]  
    }

distinctBy():根据指定条件去除重复元素

Kotlin 复制代码
fun main() {  
    val items = listOf("apple", "banana", "cherry", "date", "elderberry")  
  
    val distinctItems = items.distinctBy { it.length }  
  
    println(distinctItems) // 输出了 [apple, banana, cherry, date]  
}
  • contains():判断数组是否包含指定元素
Kotlin 复制代码
fun main() {  
    val numbers = listOf(1, 2, 3, 4, 5)  
  
    val containsThree = numbers.contains(3)  
  
    println(containsThree) // 输出:true  
}
  • indexOf():获取指定元素的下标,如果不存在则返回-1
Kotlin 复制代码
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

    Kotlin 复制代码
    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():根据条件分成两个数组

Kotlin 复制代码
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():根据条件将元素分组到不同的数组中
Kotlin 复制代码
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():计算元素的总和

    Kotlin 复制代码
    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():计算元素的平均值

    Kotlin 复制代码
    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():获取最大元素

Kotlin 复制代码
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():对元素进行累加
Kotlin 复制代码
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():对元素进行累加,并可以指定初始值
Kotlin 复制代码
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():遍历元素并执行指定操作

    Kotlin 复制代码
    fun main() {  
        val numbers = listOf(1, 2, 3, 4, 5)  
      
        numbers.forEach { println(it) }  
    }
    将会输出以下内容:
    
    1  
    2  
    3  
    4  
    5
  • forEachIndexed():遍历元素并获取索引,执行指定操作

    Kotlin 复制代码
    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():将两个数组合并成一个新数组,每个元素都是一对。

    Kotlin 复制代码
    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():判断所有元素是否都满足指定条件

    Kotlin 复制代码
    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():判断是否有任何元素满足指定条件

    Kotlin 复制代码
    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():判断是否所有元素都不满足指定条件

    Kotlin 复制代码
    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

    Kotlin 复制代码
    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

    Kotlin 复制代码
    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

Kotlin 复制代码
  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():将每个元素执行指定操作,并将结果合并到一个指定类型的列表中
Kotlin 复制代码
 val numbers = listOf(1, 2, 3, 4, 5)  
 val flattened = numbers.flatMapTo(HashSet<Int>()) { setOf(it * 2) }
 println("Flattened list: $flattened")
  • mapTo():将每个元素执行指定操作,并将结果合并到一个指定类型的列表中
Kotlin 复制代码
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():对元素进行累加,并可以访问索引

    Kotlin 复制代码
    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():对元素进行累加,并可以访问索引,并可以指定初始值

    Kotlin 复制代码
    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
相关推荐
wn5315 分钟前
【Go - 类型断言】
服务器·开发语言·后端·golang
试行10 分钟前
Android实现自定义下拉列表绑定数据
android·java
Hello-Mr.Wang17 分钟前
vue3中开发引导页的方法
开发语言·前端·javascript
救救孩子把20 分钟前
Java基础之IO流
java·开发语言
WG_1721 分钟前
C++多态
开发语言·c++·面试
宇卿.28 分钟前
Java键盘输入语句
java·开发语言
Amo Xiang38 分钟前
2024 Python3.10 系统入门+进阶(十五):文件及目录操作
开发语言·python
friklogff1 小时前
【C#生态园】提升C#开发效率:深入了解自然语言处理库与工具
开发语言·c#·区块链
重生之我在20年代敲代码2 小时前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
爱上语文2 小时前
Springboot的三层架构
java·开发语言·spring boot·后端·spring