kotlin入门-高阶函数(map,flatMap,reduce,fold)

使用map函数对集合进行操作

fun main(args: Array) {
    val list:Array = arrayOf(1,2,3,4,5,6,7,8)

    val newList = list.map {
        it*5+10
    }

    val doubleList = list.map(Int::toDouble)

    newList.forEach(::println)
    doubleList.forEach(::println)
}

使用flatMap对集合数据进行合并成一个集合

fun main(args: Array) {
    val list = arrayOf(
            1..10,
            20..30,
            50..100
    )

    val mergeList = list.flatMap {
        it.map {
            "No.$it"
        }
    }

    mergeList.forEach(::println)
}

使用reduce对集合进行计算操作

fun main(args: Array) {
    val list = arrayOf(
            1..10,
            20..30,
            50..100
    )

    val mergeList = list.flatMap { it }
    mergeList.forEach(::println)
    println("总和:${mergeList.reduce(Int::plus)}")
    println("总和:${mergeList.reduce { acc, i -> acc + i }}")

    /**
     * 方式1
     */
    (0..6).map {
        factorial(it)
    }.forEach(::println)

    /**
     * 方式2
     */
    (0..6).map(::factorial).forEach(::println)

}

/**
 * 求阶乘
 */
fun factorial(int: Int): Int {
    if (int == 0) return 1
    return (1..int).reduce { acc, i -> acc * i }
}

使用fold对集合进行自定义计算

fun main(args: Array) {
    /**
     * 对集合进行转化和拼接
     */
    val _str: String = (0..10).joinToString(",")
    println(_str)

    /**
     * 添加一个初始值
     * 打印结果=》9
     */
    println((0..1).fold(8) { acc, i ->
        acc + i
    })

    /**
     * 添加一个StringBuilder的初始值与集合中的元素进行计算操作
     */
    val _str1 = (0..5).fold(StringBuilder()) { acc, i ->
        acc.append(i).append(",")
    }
    println(_str1)

}

你可能感兴趣的:(kotlin)