Преобразование списка в map of element -> list(element) в scala

У меня есть список документов, где у документа есть владелец - пользователь.

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

Например, у меня есть:

"doc1" owned by user "John"
"doc2" owned by user "Frank"
"doc3" owned by user "John"

В итоге я должен получить карту:

"John" -> List("doc1", "doc3"), "Frank" -> List("doc2")

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

5
задан user1043466 30 December 2011 в 03:17
поделиться