5.3 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())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alfred Gao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值