美好的一天,我很难搞清楚如何从列表中获取单个对象,我确实谷歌,但所有主题都显示如何返回List带有排序对象或类似的对象.
我有一个 User Class
class User() {
var email: String = ""
var firstname: String = ""
var lastname: String = ""
var password: String = ""
var image: String = ""
var userId: String = ""
constructor(email:String,
firstname: String,
lastname: String,
password: String,
image: String, userId : String) : this() {
this.email = email
this.firstname = firstname
this.lastname = lastname
this.password = password
this.image = image
this.userId = userId
}
}
Run Code Online (Sandbox Code Playgroud)
在java中我会写类似的东西
User getUserById(String id) {
User user = null;
for(int i = 0; i < myList.size;i++;) {
if(id == myList.get(i).getUserId())
user = myList.get(i)
}
return user;
}
Run Code Online (Sandbox Code Playgroud)
如何在kotlin中获得相同的结果?
zsm*_*b13 29
您可以使用find,它为您提供匹配给定谓词的列表的第一个元素(或者null,如果没有匹配):
val user: User? = myList.find { it.userId == id }
Run Code Online (Sandbox Code Playgroud)
或者,如果您确实需要与谓词匹配的最后一个元素,就像您的Java示例代码那样,您可以使用last:
val user: User? = myList.last { it.userId == id }
Run Code Online (Sandbox Code Playgroud)
小智 12
如果你不想处理空对象,试试这个:
val index = myList.indexOfFirst { it.userId == id } // -1 if not found
if (index >= 0) {
val user = myList[index]
// do something with user
}
Run Code Online (Sandbox Code Playgroud)
小智 8
简化
val user: User = myList.single { it.userId == id }
Run Code Online (Sandbox Code Playgroud)
或者如果可能列出没有您的过滤器
val user: User? = myList.singleOrNull{ it.userId == id }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7308 次 |
| 最近记录: |