是一个过滤器,能够通过各种条件过滤出符合该条件的数据。
val numbers1 = listOf<Int>(213, 4, 534, 646, 757, 8, 97, 9);
var result = numbers1.filter {
it < 10
}
结果:4,8,9
用来判断在数据中有没有符合条件的数据,返回的结果为布尔类型的值。true或者false
val numbers1 = listOf<String>("123", "田园犬", "345", "收到");
println(dogdatabase.any{it.kind=="田园犬"})
结果:true
求最大值
、val numbers2 = listOf<Int>(213, 4, 534, 646, 757, 8, 97, 9);
numbers1.maxByOrNull { it }
结果:757 (最大值)
求最小值
val numbers2 = listOf<Int>(213, 4, 534, 646, 757, 8, 97, 9);
numbers1.minByOrNull { it }
结果:4(最小值)
将一个集合遍历,之后按照你自己的规则生成新的集合。
val arr = intArrayOf(1, 2, 4, 6)
val newArr = arr.map { (it * 2).toString() }
val newArr1 = arr.map {
if (it == 2) {
it * 2
}
}
嵌套遍历集合,生成新的集合.
val list = mutableListOf(
arrayOf("华晨宇", "张碧晨", "邓紫棋"),
arrayOf("何老师", "汪涵"),
arrayOf("谢娜", "张杰", "汪诗诗"),
)
val flatList = list.flatMap {
it.map { name -> "大明星:$name" }
}
flatList.forEach(::println)
将所提供的操作应用于集合元素并返回积累的结果
从第一个元素开始累加值,并将操作从左到右应用到当前累加器值和每个元素。
val list = listOf(1, 2, 5, 2)
list.reduce { acc, i ->
println("acc:$acc,i:$i")
acc + i
}
这个函数和reduce类似,不过它可以设置一个初始值
val list = listOf(1, 2, 5, 2)
list.fold(2) { acc, i -> //初始值为2
println("acc:$acc,i:$i")
acc + i
}
joinToString
val result = (0..6).joinToString(",")
println("result:$result")
结果: "0,1,2,3,4,5,6"
val number = listOf("one", "two", "three", "four")
number.joinToString(separator = " | ", prefix = "start:", postfix = ":end")
结果:start:one|two|three|four|:end
遇到第一个不符合条件的就结束,留下前边的作为一个新的集合返回.
val list = listOf(
UserEntity(100, "华晨宇", 30),
UserEntity(101, "张碧晨", 31),
UserEntity(103, "邓紫棋", 29),
UserEntity(103, "李宇春", 32),
)
val result = list.takeWhile {
it.age >= 30
}
println("result:$result")
//result:[userName:华晨宇,userId:100,age:30, userName:张碧晨,userId:101,age:31]
计算列表中符合条件的元素的数量
val len1 = "Meng qingLong".count()
val len2 = "Meng qingLong".count(){ //计算字符串中符合'n'的数量
it == 'n'
}
查找符合条件并返回第一个符合该条件的数据。他跟filter的区别就是。filter返回的是结果集合。而find是找到第一个就返回。
val listOf = listOf<String>("a", "b", "c")
val find: String? = listOf.find { it == "a" }
//找到"a" 就返回了当前的String类型的"a"
分组。即根据条件把集合拆分为为一个Map
fun main(string: Array<String>) {
val s = listOf("china","beijing","wuhan","guangzhou","Changsha","wuhu")
val n1 = s.groupBy {
//按照首字母大写进行分组操作
it.first().uppercase()
//返回成Map的Key。 满足条件的元素相应的进入Map集合中的Value,List列表中
}
println(n1)
}
//输出
{C=[china, Changsha], B=[beijing], W=[wuhan, wuhu], G=[guangzhou]}