Array数组的常用方法
数组变形:map方法
可以把数组变成另外一种类型,并返回列表
源码:
/**
* Returns a list containing the results of applying the given [transform] function
* to each element in the original array.
*
* @sample samples.collections.Collections.Transformations.map
*/
public inline fun <T, R> Array<out T>.map(transform: (T) -> R): List<R> {
return mapTo(ArrayList<R>(size), transform)
}
例:将数组转化成字符串列表
val numbers = arrayOf(4, 5, 2, 3, 2, 5, 3, 4, 5, 6, 7, 8)
print(numbers.map { it-> "$it 号电梯" })
结果:
[4 号电梯, 5 号电梯, 2 号电梯, 3 号电梯, 2 号电梯, 5 号电梯, 3 号电梯, 4 号电梯, 5 号电梯, 6 号电梯, 7 号电梯, 8 号电梯]
筛选器:filter方法
可以根据条件将匹配的元素给抽出来,以列表的形式返回
源码:
/**
* Returns a list containing only elements matching the given [predicate].
*
* @sample samples.collections.Collections.Filtering.filter
*/
public inline fun <T> Array<out T>.filter(predicate: (T) -> Boolean): List<T> {
return filterTo(ArrayList<T>(), predicate)
}
例:将数组的奇数以列表形式返回
val numbers = arrayOf(4, 5, 2, 3, 2, 5, 3, 4, 5, 6, 7, 8)
print(numbers.filter { it % 2 == 1 })
结果:[5, 3, 5, 3, 5, 7]
获取最大最小值
max()、min():
例:
val numbers = arrayOf(4, 5, 2, 3, 2, 5, 3, 4, 5, 6, 7, 8)
println("max = ${numbers.max()}")
println("min = ${numbers.min()}")
结果:
max = 8
min = 2
maxBy{}、minBy{}根据指定条件获取最大最小值:
例:根据元素长度获取,最长元素和最短元素字符串
val names = arrayOf("Curry", "LeBron", "Kobe", "Anthony")
println(names.maxBy { s -> s.length })
println(names.minBy { s -> s.length })
结果:
Anthony
Kobe
唯一化:distinct()
去掉出重复元素,并以列表形式返回。
例:
val numbers = arrayOf(4, 5, 2, 3, 2, 5, 3, 4, 5, 6, 7, 8)
print(numbers.distinct())
结果:
[4, 5, 2, 3, 6, 7, 8]
注意:其实该方法与toSet()类似
判定方法
all():
给定一个条件,判断全体元素是否满足,返回布尔值,全部元素满足判断条件才返回true。
例:判断数组全体元素是否大于0
val numbers = arrayOf(4, 5, 2, 3, 2, 5, 3, 4, 5, 6, 7, 8)
println(numbers.all { s -> s > 0 })
结果:true
any():
与all()相对,判断全体元素,只要有一个元素满足判断条件返回true。
例:判断数组元素是否存在大于7的
val numbers = arrayOf(4, 5, 2, 3, 2, 5, 3, 4, 5, 6, 7, 8)
println(numbers.any { s -> s > 7 })
结果:true
none()
给定一个条件,判断所有元素是否都不
符合,返回布尔值,都不符合返回true:
例子:判断数组是否都不小于0
val numbers = arrayOf(4, 5, 2, 3, 2, 5, 3, 4, 5, 6, 7, 8)
println(numbers.none { s -> s < 0 })
结果:true
计算
sum()求和
例:
val numbers = arrayOf(4, 5, 2, 3, 2, 5, 3, 4, 5, 6, 7, 8)
println(numbers.sum())
结果:54
average()求平均数
val numbers = arrayOf(4, 5, 2, 3, 2, 5, 3, 4, 5, 6, 7, 8)
println(numbers.average())