【问题标题】:Android Kotlin : Search for element with specific key value in mutableListAndroid Kotlin:在 mutableList 中搜索具有特定键值的元素
【发布时间】:2019-10-18 11:35:47
【问题描述】:

我有一个可变的汽车列表(汽车是一个数据类)。 我正在寻找一种方法来在我的可变列表中找到具有特定 id 的 Car。 我如何在 Kotlin 中实现这一点?

Car.kt

data class Car(
    val createdAt: String = "",
    val updatedAt: String = "",
    val id: String = "",
    val number: String = ""
)

在我的 CarsFragment.kt 中:

var cars: MutableList<Car>

// extract Car with id = "89Ddzedzedze8998" ?

【问题讨论】:

    标签: android kotlin mutablelist


    【解决方案1】:

    使用 firstOrNullfind 获取结果,或使用 null 以防给定 id 没有可用的汽车。

    fun getCarById(carId: Int) {
       val myCar: Car? = carsList.firstOrNull { it.id == carId }
        // or
    
       val myCar: Car? = carsList.find { it.id == carId }
    }
    

    现在您可以轻松检查是否获得实际值或空值,并相应地进一步移动。

    【讨论】:

      【解决方案2】:

      你可以在 kotlin 中使用 find

      val idToCheck = "89Ddzedzedze8998"
       cars.find { it.id == idToCheck  }
      

      【讨论】:

        【解决方案3】:

        所以你想要这样的东西

        val idToCheck = "89Ddzedzedze8998"
        cars.first {car->
          car.id == idToCheck
        }
        

        更新

        正如a_local_nobody 提到的,值得一提的是first 将抛出NoSuchElementExceptionfirstOrNull 将返回null

        【讨论】:

        • 不错的答案,但值得补充的是,如果没有找到任何项目,first 将抛出 NoSuchElementException,这就是为什么我个人更喜欢 firstOrNull :)
        • 是的,它会抛出异常,但在问题中他/她没有提到如何处理该项目。也许他/她更喜欢异常而不是 null,这完全取决于你使用你喜欢的任何东西。
        • 是的,我同意这个问题没有进一步的信息,值得任何阅读的人添加
        猜你喜欢
        • 1970-01-01
        • 2021-12-12
        • 1970-01-01
        • 1970-01-01
        • 2020-04-11
        • 1970-01-01
        • 1970-01-01
        • 2021-12-06
        • 1970-01-01
        相关资源
        最近更新 更多