Что ж ... увидев множество решений, я добавлю два своих цента здесь:
Если вы не возражаете против потери значений дублированных ключей, вы можете использовать что-то следующее:
listOfMaps.flatMap { it.entries }.associate{ it.key to it.value } // or: it.toPair() if you will
// depending on how large those lists can become, you may want to consider also using asSequence
Если вместо этого вы хотите собрать все записи, включая дубликаты ключей (т.е. сохранить все значения), используйте вместо этого следующее (что затем дает Map<String, List<String>>
):
listOfMaps.flatMap { it.entries }.groupBy({ it.key }) { it.value }
Также здесь комментарий относительно asSequence
содержит ...
Наконец, если вы можете опустить эти карты в списке и просто использовать вместо него Pair
, это избавит вас от вызова flatMap { it.entries }
и сделает вещи еще проще, например, вы можете просто позвонить .toMap()
тогда для первого случая и groupBy
напрямую для второго, и вопрос о asSequence
больше не возникает.