如何在 Kotlin 中进行线性搜索和检索对象?
How to do linear search and retrieve object in Kotlin?
所以我有一个 ArrayList<MovieDetailEntity>
,其中包含一个名为 MovieDetailEntity
的数据 class。在数据 class 中,我有一个电影 ID,它对每部电影都是唯一的。我正在尝试通过线性搜索检索对象中的其余属性。
所以目前我有这些功能:
private fun getMovieDetails():ArrayList<MovieDetailEntity>{
return DetailDataDummy.getMovieDetail()
}
fun getDetailsById(movieId: String):MovieDetailEntity{
val details = getMovieDetails()
var detailEntity: MovieDetailEntity
for (item in details){
if (movieId == item.movieId){
detailEntity = item
break
}
}
return detailEntity
}
我正在尝试在 ID 匹配时在 fun getDetailsById(movieId: String)
中返回整个对象。我怎样才能做到这一点?
Kotlin 的标准库提供了很多函数来完成这样的标准任务,而无需编写 for 循环。在这里你可以做
fun getDetailsById(movieId: String): MovieDetailEntity {
return getMovieDetails().first {
it.movieId == movieId
}
}
请注意,如果找不到这样的项目,这将崩溃。要不崩溃但允许可为空的 return 使用 firstOrNull
.
所以我有一个 ArrayList<MovieDetailEntity>
,其中包含一个名为 MovieDetailEntity
的数据 class。在数据 class 中,我有一个电影 ID,它对每部电影都是唯一的。我正在尝试通过线性搜索检索对象中的其余属性。
所以目前我有这些功能:
private fun getMovieDetails():ArrayList<MovieDetailEntity>{
return DetailDataDummy.getMovieDetail()
}
fun getDetailsById(movieId: String):MovieDetailEntity{
val details = getMovieDetails()
var detailEntity: MovieDetailEntity
for (item in details){
if (movieId == item.movieId){
detailEntity = item
break
}
}
return detailEntity
}
我正在尝试在 ID 匹配时在 fun getDetailsById(movieId: String)
中返回整个对象。我怎样才能做到这一点?
Kotlin 的标准库提供了很多函数来完成这样的标准任务,而无需编写 for 循环。在这里你可以做
fun getDetailsById(movieId: String): MovieDetailEntity {
return getMovieDetails().first {
it.movieId == movieId
}
}
请注意,如果找不到这样的项目,这将崩溃。要不崩溃但允许可为空的 return 使用 firstOrNull
.