📜  Kotlin 聚合操作

📅  最后修改于: 2022-05-13 01:54:41.998000             🧑  作者: Mango

Kotlin 聚合操作

聚合操作是对数据结构(例如数组)作为一个整体执行的操作,而不是对单个元素执行的操作。

    使用聚合操作的函数如下:
  1. count()函数用于返回元素的数量。
  2. sum()函数用于返回数字集合中元素的总和。
  3. min()函数用于返回最小元素。
  4. max()函数用于返回最大元素。
  5. average()函数用于返回数字集合中元素的平均值。
  6. maxBy()函数返回一个收集器,它根据给定的 生成最大元素。
  7. minBy()函数返回一个收集器,它根据给定的 生成最小元素。
  8. maxWith()函数采用 Comparator 对象,通常返回最大元素。
  9. minWith()函数采用 Comparator 对象,通常返回最小元素。
  10. sumBy()通过使用线性代数和 Matrix 包功能执行有效且可选加权的按组求和。
  11. sumByDouble()返回由选择器函数产生的所有值的总和,该函数应用于数组中的每个元素。

使用一些聚合函数的 Kotlin 程序——

//Functions that used aggregate operations
fun main(args: Array) {
    val numbers = listOf(6,34,57,78,12,4,5,5)
  
    println("Count the number of element in the list: ${numbers.count()}")
    println("Sum of the elements in the list: ${numbers.sum()}")
    println("Min value in the list: ${numbers.min()}")
    println("Max value in the list: ${numbers.max()}")
    println("Average of all elements in the list: ${numbers.average()}")
}

输出:

Count the number of element in the list: 8
Sum of the elements in the list: 201
Min value in the list: 4
Max value in the list: 78
Average of all elements in the list: 25.125

使用 sumBy() 和 sumByDouble() 函数的 Kotlin 程序 -

//Functions that used aggregate operations
fun main(args: Array) {
    val numbers = listOf(6,34,57,78,12,4,5,5)
    println("Multiply each element with 3 and sum: "+numbers.sumBy { it * 3 })
    println(numbers.sumByDouble { it.toDouble() / 2 })
}

输出:

Multiply each element with 3 and sum: 603
100.5

使用 minBy() 和 maxWith() 函数的 Kotlin 程序 –

//Functions that used aggregate operations
fun main(args: Array) {
    val numbers = listOf(6,34,57,78,12,4,5,5)
    val minRem = numbers.minBy { it % 4}
    println("Minimum remainder returned by: " +minRem)
  
    val strings = listOf("Cricket","Football","Volley","Chess")
    val maxstrln = strings.maxWith(compareBy { it.length })
    println("String with max length is: " +maxstrln)
}

输出:

Minimum remainder returned by: 12
String with max length is: Football

折叠和减少功能

  • fold()函数:它将关联二元运算符函数作为参数,并将使用它来折叠集合中的元素。 .
  • foldRight()函数:它的工作方式类似于 fold()。遍历集合中元素的顺序是从右到左。
  • foldIndexed()函数:用于在迭代时获取当前索引的访问权限。
  • foldRightIndexed()函数:它的工作方式类似于 foldIndexed()。遍历集合中元素的顺序是从右到左
  • reduce()函数将数组缩减为单个值。它为数组的每个值执行提供的函数。
  • reduceRight()函数:它的工作方式类似于 reduce()。删除集合中元素的顺序是从右到左。
  • reduceIndexed()函数从第一个元素开始累加值,并从左到右将 [操作] 应用于当前累加器值以及给定集合中的每个元素及其索引。
  • reduceRightIndexed()函数:它的工作方式类似于 reduceIndexed()。集合中的顺序是从右到左。

使用 fold() 和 reduce() 函数的 Kotlin 程序 –

//Fold and Reduce Functions
fun main(args: Array) {
    val numbers = listOf(57,78,12,4,5,5, 42)
    val sum = numbers.reduce { sum, element -> sum + element }
    println("The sum of all elements in list "+sum)
    val sumThrice = numbers.fold(0) { sum, element -> sum + element * 3}
    println("Multiply each element with 3 and sum "+sumThrice)
}

输出:

The sum of all elements in list 203
Multiply each element with 3 and sum 609

使用 foldRight()函数的 Kotlin 程序 –

//Fold and Reduce Functions
fun main(args: Array) {
    val numbers = listOf(6,34,57,78,12,4,5,5, 4)
    val sumThriceRight= numbers.foldRight(0){element, sum -> sum + element*3}
    println("The sum of the numbers from the right side: "+sumThriceRight)
}

输出:

The sum of the numbers from the right side: 615

使用 foldIndexed() 和 foldRightIndexed() 的 Kotlin 程序 -

//Fold and Reduce Functions
fun main(args: Array) {
    val numbers = listOf(6,34,57,78,12,4,5,5, 42, 10, 4)
    val sumOfEvenNumbers = numbers.foldIndexed(0)
    { idx, sum, element -> if (idx % 2 == 0) sum + element else sum }
    println("Sum of even numbers: "+sumOfEvenNumbers)
  
    val sumOfEvenFromRight = numbers.foldRightIndexed(0)
    { idx, element, sum -> if (idx % 2 == 0) sum + element else sum }
    println("Sum of even numbers from Right side: "+sumOfEvenFromRight)
}

输出:

Sum of even numbers: 126
Sum of even numbers from Right side: 126