Как собрать поток пар в котлин? - PullRequest
0 голосов
/ 27 сентября 2018

Как собрать поток пар в котлин?Поэтому в Java я обычно делаю:

Stream.of("1", "2", "3").map(x -> new AbstractMap.SimpleEntry<>(x, x)).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))

Однако в Kotlin

Stream.of("1", "2", "3").map{ x -> x to x } 

возвращает поток пар, и я не могу найти способ собрать это.

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Поскольку вы используете сам элемент списка в качестве ключа, использование associateWith сделает код еще более кратким:

val myMap = listOf("1", "2", "3").associateWith{ it }

Результат:

{1 = 1, 2 = 2, 3 = 3}

0 голосов
/ 27 сентября 2018

В Kotlin более естественно использовать listOf(), а не Stream.of() в Java.Если у вас есть List<Pair>, вы можете использовать расширение .toMap(), чтобы превратить их в карту!

val myMap: Map<String, String> = listOf("1", "2", "3").map{ it to it }.toMap()

На List также есть функция .associate(), которая просто создаст картудля вас, учитывая лямбду:

val myMap2: Map<String, String> = listOf("1", "2", "3").associate { it to it }

Этот кажется чище, ИМХО.

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