我想知道检查可空列表是否大于0的最佳方法。
val list: List<Any>? = listOf()
if (list?.size.compareTo(1) > 0)
{
//do something
}
这在检查是否大于0时导致错误。IDE告诉我使用另一个带有安全调用的compareTo,但这会导致我遇到相同的情况。我可以通过为size创建一个值来解决此问题,但这似乎是一种奇怪的解决方法,我想知道是否缺少一种更简单的方法。
val count = list?.size ?: 0
if (count > 1)
{
//do something
}
答案 0 :(得分:4)
我在您的代码中看到两个问题。首先是您使用compareTo()
而不是直接比较(例如size > 0
)。另一个是使用list?
意味着任何进一步的结果都可以是null
,但您没有对此进行处理。
这是我的处理方式:
val list: List<Any>? = listOf()
list?.let {
if (it.isNotEmpty()) {
}
}
Kotlin 1.3似乎提供了一种isNullOrEmpty()
方法,您可以用它来编写:
val list: List<Any>? = listOf()
if (!list.isNullOrEmpty()) {
}
答案 1 :(得分:1)
要与Kotlin <1.3兼容,可以使用
if (list?.isNotEmpty() == true) {
// ....
}
仅当列表为非true
(且不为空)时,对null
(不等于null
)的显式检查才会进入分支。