zip(Iterable)
:集合合并举个例子,有很多玩具,一个集合记录着玩具的id,一个集合记录着玩具的名称,两个集合中相同索引的元素是指同一个玩具,那现在我们觉得两个集合存储麻烦,想要合并成一个集合存储玩具信息,就可以这样实现:
fun zip() {
val ids = listOf(4, 6, 7)
val names = listOf("trains", "toe", "airport")
println(ids.zip(names))
}
输出:[(4, trains), (6, toe), (7, airport)]
associate
:将集合转换成Map类型比如将集合的每个元素作为key,value就是元素的长度转换成map
val names = listOf("trains", "toe", "airport")
println(names.associate {
it to it.length
})
//输出:{trains=6, toe=3, airport=7}
其他相似函数:
associateWith(value)
:就等价于associate { 集合元素 to value }
associateBy(value)
:就等价于associate { value to 集合元素 }
associateWithTo
/associateByTo
:相比较于上面的操作函数,就是额外提供了可以将转换结果写入到指定的map对象中minOf
:获取集合中元素权重最小的值,集合为空抛出异常maxOf
:获取集合中元素权重最大的值,集合为空抛出异常sortedWith
:集合排序排序很简单,我们只需要传入比较器即可,但jdk1.7以后对于排序的规则有所变化,要求排序的规则必须满足:
自反性:元素a和元素b的比较的结果r1和元素b和元素a的比较的结果r2要满足:r1 == -r2
举个例子我们平常排序很容易写出下面错误的排序规则:
names.sortedWith(Comparator { a, b ->
if (a > b) 1 else -1
})
如果元素a和元素b相等,那么a和b比较结果为-1,b和a比较结果也为-1,此时就不满足自反性
的规则,直接崩溃
传递性
:元素a大于元素b,元素b大于元素c,那么元素a也应该大于元素c对称性
:元素a等于元素b,那么元素a和元素c比较的结果值应该等于元素b和元素c比较的结果值sortedBy
:为了避免程序写出的比较器不符合上面规则,直接传入元素要比较的值即可sortedByDescending
:和sortedBy
相比,降序排序阅读量:901
点赞量:0
收藏量:0