Я прохожу онлайн-курс и неправильно читаю вопрос (поэтому я думаю, что можно опубликовать этот вопрос, поскольку ответ не имеет ничего общего с тем, что было задано на курсе!).
data class Trip(
val driver: Driver,
val passengers: Set<Passenger>,
...
)
val trips: List<Trip>
так что в итоге получится что-то вроде
[
driver1 : passenger1
driver1 : passenger2
driver2 : passenger1
driver2 : passenger3
...
]
Что я хочу сделать, так это создать список всех экземпляров водителя и пассажира, возможно, в парах, и я просто не могу думать, как это сделать.
trips.map {t -> Pair (t.driver, t.passengers)}
дает мне кое-что там, но, очевидно, оставляет меня с множеством пассажиров, а не с водителем: распакованные пассажирские пары. Я не могу получить синтаксис для плоской карты, поэтому
trips.flatMap {t -> Pair (t.driver, t.passengers)}
жалуется, что пара не повторяется, что я понимаю, но не могу понять, как бы распаковать набор и сохранить индивидуальную ссылку на драйвер?
(Фактический вопрос, который я заметил при составлении этого вопроса, дает вам отдельного водителя, который может находить пассажиров, что значительно упрощает задачу, и я сделал это ...)





Итак, для каждой поездки вам нужна каждая комбинация водителя и пассажира, а затем вам нужен список всего этого? Если да, подойдет ли это?
trips.flatMap { trip ->
trip.passengers.map { passenger ->
Pair(trip.driver, passenger)
}
}
Это дает вам List<Pair<Driver, Passenger>>, если это то, что вы ищете? Он потенциально может содержать дубликаты, поэтому вы можете как-то с этим справиться.
Да, функциональное программирование требует времени, чтобы сообразить. Если вам не повезло, оставьте здесь комментарий с просьбой предоставить дополнительную информацию, и я дополню свой ответ более подробным объяснением. Удачи.
у меня уйдет некоторое время, чтобы разобраться в этом (я больше шел по маршруту карта-> плоская карта, что, как я полагаю, означает, что я еще не совсем понял реальную точку лямбда ... Да, я понимаю о обманщики, я думал, что ищу всех пассажиров, которые использовали какой-либо драйвер более одного раза, поэтому собирался обрабатывать этот список дальше, но потом понял, что ищу только повторных пассажиров для конкретного водителя ...