Как объединить два списка на основе одного атрибута в Kotlin

#android #kotlin

#Android #котлин

Вопрос:

У меня есть два списка master и vehicleFareData.

VehicleFareData имеет два поля: id и vehicleFare. Мастер имеет несколько полей, включая id,стоимость транспортного средства.

Теперь я хочу заменить поле vehicleFare в master на vehicleFare в списке vehicleFareData, где идентификатор master равен идентификатору VehicleFareData

Каков наилучший способ добиться этого в Kotlin

 fun getMasWithVehicleFare(fareCalculation: FareCalculation, mas: ArrayList<Driver_Available>): ArrayList<Driver_Available> {
    for (vehicleData in fareCalculation.vehiclesPricingData) {
        mas.find { it.mid == vehicleData.driverID }!!.fare = vehicleData.fare
    }
        return mas
    }
  

это правильный способ?

Комментарии:

1. добавьте некоторый код из того, что вы пробовали до сих пор

2. я добавил код

Ответ №1:

Ваш код довольно хорош, хотя он может дать сбой, если вы не найдете элемент из vehicleData в mas , но вы можете улучшить потребление процессорного времени для поиска объектов, используя Map вместо ArrayList
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-map/index.html

Коллекция, которая содержит пары объектов (ключей и значений) и поддерживает эффективное извлечение значения, соответствующего каждому ключу

Я думаю, что ваша проблема скорее связана с использованием хорошего типа коллекции, а не с написанием хорошего алгоритмического кода, что вполне нормально из того, что я прочитал, что вы написали