1. map
val list = 1..5
val newList = list.map {
"${it}元"
}
// 输出结果:
// I/System.out: 1元
// I/System.out: 2元
// I/System.out: 3元
// I/System.out: 4元
// I/System.out: 5元
map可以对数组进行操作
2. flatMap
val list = arrayOf(
1..3,
4..7
)
val newList = list.flatMap {
it.map {
"${it}元"
}
}
newList.forEach(::println)
// 输出结果:
// I/System.out: 1元
// I/System.out: 2元
// I/System.out: 3元
// I/System.out: 4元
// I/System.out: 5元
// I/System.out: 6元
// I/System.out: 7元
flatMap和Map都是遍历数组所有元素,区别在于flatMap可以遍历二维数组,返回一维数组
3. reduce
println((0..5).reduce { acc, i ->
Log.e("reduce ====","acc:"+acc+" i:" + i)
acc + i
})
// 输出结果:
// E/reduce?====: acc:0 i:1
// E/reduce?====: acc:1 i:2
// E/reduce?====: acc:3 i:3
// E/reduce?====: acc:6 i:4
// E/reduce?====: acc:10 i:5
// I/System.out: 15
reduce功能是累加器
4. fold
println((0..5).fold(1) { acc, i ->
Log.e("fold ====","acc:"+acc+" i:" + i)
acc + i
})
// 输出结果:
// E/fold?====: acc:1 i:0
// E/fold?====: acc:1 i:1
// E/fold?====: acc:2 i:2
// E/fold?====: acc:4 i:3
// E/fold?====: acc:7 i:4
// E/fold?====: acc:11 i:5
// I/System.out: 16
fold和reduce功能差不多,却别在于fold有一个参数,fold可以从这个参数开始累加
|