elementAtOrElse & getOrElse
- 源码
- 说明
返回给定索引的元素,如果索引超出列表的范围,则返回调用defaultValue函数的结果
- 示例
val list = listOf("tom", "rose", "riley", "frank")
println(list.elementAtOrElse(2) { 1 })
println(list.elementAtOrElse(-1) { list.first() })//返回数组的第一个
println(list.elementAtOrElse(4) { "defaultName" })//返回指定的值
println(list.elementAtOrElse(4) { UserInfo("tom", 21, 178) })//返回指定泛型结果
println(list.getOrNull(0)) //返回给定索引的元素,没有则返回null
println(list.getOrNull(-1))
data class UserInfo(val name: String, val age: Int, val height: Int)//下文也有用到
打印结果:
riley
tom
defaultName
UserInfo(name=tom, age=21, height=178)
tom
null
elementAtOrNull
- 源码
- 说明
返回给定索引的元素,如果索引超出列表的范围,则返回null
- 示例
val list = listOf("tom", "rose", "riley", "frank")
println(list.elementAtOrNull(2))
println(list.elementAtOrNull(-1))
println(list.elementAtOrNull(4))
打印结果:
riley
null
null
find
- 源码
- 说明
返回满足给定条件的第一个元素,若没有,则返回null
- 示例
val list = listOf("tom", "rose_1", "riley", "frank", "rose_2")
println(list.find { it.startsWith("rose") })
println(list.findLast { it.startsWith("rose") })//findLast同理,返回满足给定条件的最后一位
rose_1
rose_2
first
- 源码
- 说明
返回满足给定条件的第一个元素,若没有,则抛出NoSuchElementException
- 示例
val list = listOf("tom", "rose_1", "riley", "frank", "rose_2")
println(list.first()) //first()同理,若数组size为0,同样也会抛出异常NoSuchElementException
println(list.firstOrNull()) //返回第一个元素,若没有,则返回null
println(list.first { it == "ben" })
打印结果:
tom
tom
Exception in thread "main" java.util.NoSuchElementException: Collection contains no element matching the predicate.
firstNotNullOf
- 源码
- 说明
返回转换函数的第一个非空的值,若没有,则抛出异常NoSuchElementException
- 示例
val userInfoList = arrayListOf(
UserInfo("tom", 21, 178), UserInfo("rose", 20, 165), UserInfo("Riley", 30, 168)
)
println(userInfoList.firstNotNullOf { it.height.takeIf { it > 170 } })
println(userInfoList.firstNotNullOf { it.height.takeIf { it > 180 } })
打印结果:
178
Exception in thread "main" java.util.NoSuchElementException: No element of the collection was transformed to a non-null value.
single
- 源码
- 说明
返回满足给定条件的唯一元素,若没有,则抛出异常NoSuchElementException,若有多个,则抛出异常IllegalArgumentException
- 示例
val list = listOf("tom", "rose", "riley", "frank", "rose")
println(list.single { it == "frank" })
println(list.single { it == "rose" })
打印结果:
frank
Exception in thread "main" java.lang.IllegalArgumentException: Collection contains more than one matching element.
未完待续...