отобразить список ключей и наборы в список пар - PullRequest
0 голосов
/ 07 ноября 2018

Я прохожу онлайн-курс и неправильно читаю вопрос (вот почему я думаю, что можно опубликовать этот вопрос, поскольку ответ не имеет ничего общего с тем, что было задано в курсе!).

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)} 

жалуется, что пара не повторяется, что я понимаю, но не могу понять, как распаковать набор и сохранить индивидуальную ссылку на драйвер?

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

1 Ответ

0 голосов
/ 07 ноября 2018

Итак, для каждой поездки вам нужна каждая комбинация водитель / пассажир, а затем вам нужен список всех этих? Если это так, будет ли это делать?

trips.flatMap { trip -> 
    trip.passengers.map { passenger -> 
        Pair(trip.driver, passenger) 
    } 
}

Это дает вам List<Pair<Driver, Passenger>>, если это то, что вы ищете? Он потенциально может содержать дубликаты, так что вы можете захотеть обработать это каким-то образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...