面试题答案
一键面试-
确保空安全的方法:
- 遍历:使用
forEach
或for - in
循环,并结合?.
操作符来处理可能为空的值。例如,当遍历一个List<Map<String, Any?>>
时,对于Map
可能为空的情况,可以这样处理。 - 过滤:使用
filterNotNull
函数过滤掉空值,然后对非空值进行操作。在处理Map
中的值时,同样可以使用filter
结合?.
操作符来过滤掉值为空的键值对。 - 转换:在转换数据时,使用
mapNotNull
函数,它会过滤掉null
结果,只保留非空结果。同时对于Map
中的值转换,使用mapValues
并结合?.
操作符确保空安全。
- 遍历:使用
-
Kotlin代码实现:
fun main() {
val data: List<Map<String, Any?>> = listOf(
mapOf("key1" to "value1", "key2" to null),
mapOf("key3" to null, "key4" to 42),
null
)
// 遍历
data.forEach { map ->
map?.forEach { (key, value) ->
println("$key: $value")
}
}
// 过滤
val nonNullData = data.filterNotNull()
val nonNullMaps = nonNullData.map { map ->
map.filter { (_, value) -> value != null }
}
// 转换
val transformedData = nonNullMaps.map { map ->
map.mapValues { (_, value) ->
value?.toString()?: "default"
}
}
println(transformedData)
}
上述代码首先遍历了List<Map<String, Any?>>
,在遍历过程中对可能为空的Map
进行了空安全处理。然后通过filterNotNull
和filter
过滤掉了空值。最后通过mapValues
对Map
中的值进行了转换,并在转换过程中处理了空值情况。