6 }) //报错 java.util.NoSuchElementException。Log.d("======first", numbers.elementAt(8)) //报错。elementAt 也有这种情况当给出的下标集合中不存在的时候也是会报错的比如。elementAtOrNull的作用判断条件符合返回元素,不符合返回null。参数映射为一个集合元素类型的实例。last 是取集合元素中最后一个元素。">
赞
踩
kotlin 中
first 是取集合元素中第一个元素
last 是取集合元素中最后一个元素
indexOf 根据元素寻找下标,默认是第一个
elementAt 根据下标找元素
下面写一个demo 说明下他们几个的使用
- val list = listOf("A", "D", "A", "B", "E", "C", "D", "C", "E", "F")
- //打印集合中的第一个元素
- Log.d("=======first", list.first().toString()) //打印结果是A
- //符合条件的第一个元素,根据谓词匹配
- Log.d("=======first{}", list.first { it =="D"})//打印结果是D
- //打印集合中的最后一个元素
- Log.d("=======last", list.last().toString()) //打印结果是F
- //符合条件的最后一个元素,根据谓词匹配
- Log.d("=======last{}", list.last { it =="D"})//打印结果是D
- //根据元素寻找下标,默认是第一个
- Log.d("=======indexOf", list.indexOf("D").toString()) //打印结果是1
- //集合中元素第一个是D的下标
- Log.d("=======indexOfFirst", list.indexOfFirst { it == "D" }.toString())//打印结果是1
- //集合中元素最后一个是D的下标
- Log.d("=======indexOfLast", list.indexOfLast { it == "D" }.toString())//打印结果是6
- //根据下标找元素
- Log.d("=======last", list.elementAt(3).toString()) //打印结果是B
上面的根据谓词匹配的demo 不明显下面重新写一个如下
- val numbers = listOf("one", "two", "three", "four", "five")
- Log.d("======first", numbers.first { it.length > 3 }) //打印结果three
- Log.d("======last", numbers.last { it.length > 3 }) //打印结果five
有时候判断条件集合中没有的时候就会报错如下
val numbers = listOf("one", "two", "three", "four", "five")
Log.d("======first", numbers.first { it.length > 6 }) //报错 java.util.NoSuchElementException
这个时候可以使用
firstOrNull 判断条件符合返回元素如果不符合返回null 这样就不会报错了
lastOrNull 判断条件符合返回元素如果不符合返回null 这样就不会报错了
- Log.d("======first", numbers.firstOrNull { it.length>6 }.toString()) //打印结果null
- Log.d("======last", numbers.lastOrNull { it.length>6 }.toString()) //打印结果null
elementAt 也有这种情况当给出的下标集合中不存在的时候也是会报错的比如
例如下面的就会报错
val numbers = listOf("one", "two", "three", "four", "five")
Log.d("======first", numbers.elementAt(8)) //报错
这种时候可以使用elementAtOrNull
elementAtOrNull的作用判断条件符合返回元素,不符合返回null
- val numbers = listOf("one", "two", "three", "four", "five")
- Log.d("======first", numbers.elementAtOrNull(8).toString())
还有一个elementAtOrElse 还接受一个 lambda 表达式,该表达式能将一个 Int
参数映射为一个集合元素类型的实例。 当使用一个越界位置来调用时,elementAtOrElse()
返回对给定值调用该 lambda 表达式的结果。
- val numbers = listOf("one", "two", "three", "four", "five")
- Log.d("======first", numbers.elementAtOrElse(5) { index -> "The value for index $index is undefined"})
打印结果:The value for index 5 is undefined
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。