Kotlin中过滤ArrayList并获取单个对象的方法咨询
如何从ArrayList中过滤并获取单个User对象?
当然有合适的方法啦!你一开始用的filter函数其实会返回所有符合条件的元素组成的列表,直接赋值给User类型变量会出现类型不匹配的问题。
针对你想获取单个匹配对象的场景,Kotlin提供了专门的函数:find(或者它的别名firstOrNull),它会返回列表中第一个符合条件的元素;如果没有找到匹配项,就返回null,完全契合你的需求。
正确示例代码
// 先补充User类的定义,方便代码运行 data class User(val code: Int) var array: ArrayList<User> = ArrayList() array.add(User(123)) array.add(User(683)) array.add(User(329)) // 推荐用可空类型接收,避免无匹配时的空指针问题 val user: User? = array.find { it.code == 683 } // 如果你能确保一定存在匹配元素,也可以用!!强制非空(但不推荐,更建议用安全调用或空判断) // val user: User = array.find { it.code == 683 }!!
额外补充
find和firstOrNull是完全等价的,只是命名不同,选哪个看你的个人习惯- 如果业务逻辑要求必须找到匹配元素,找不到就抛出异常,可以使用
first函数,它在无匹配项时会抛出NoSuchElementException
内容的提问来源于stack exchange,提问作者מיכאל בלחסן
相关产品推荐
相关产品推荐

