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()) { setOf(it * 2) }
     println("Flattened list: $flattened")
    
  • mapTo():将每个元素执行指定操作,并将结果合并到一个指定类型的列表中
  • val numbers = listOf(1, 2, 3, 4, 5)    
    val squaredNumbers = numbers.mapTo(ArrayList()) { 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,开发语言,android)