Scala добавить список [карта] на карту

#scala

#scala

Вопрос:

Я хочу преобразовать

 List(Map(AAA -> 1111), Map(BBB -> 22222), Map(CCC -> 3333))
  

Для

 Map( AAA->111, BBB-> 222, CCC->333)
  

Я уже видел некоторые ответы ( flatten.toMap или reduce(_ _) ), но они работают плохо.

  • Я не должен создавать ‘var’ и новые функции

Комментарии:

1. в ожидаемом выводе вы хотите изменить значение. Я вижу 1111 , что он преобразуется в 111 . flatten.map работает, в чем проблема, с которой вы столкнулись?

2. Нет неявных аргументов типа: ((type1, type2)) => IterableOnce[B_] Появляется это сообщение.

3. Хорошо, я не вижу никаких проблем с scala 2.13. Возможно, вы используете более низкую версию

4. Почему эти параметры не работают хорошо? У вас ошибка компиляции, ошибка времени выполнения или другой вывод?

5. Извините за всех… Проблема заключалась в неправильном сопоставлении типов

Ответ №1:

Вы действительно можете использовать flatMap с identity функцией для преобразования его в список кортежей, а затем toMap, чтобы снова сделать его картой

 l.flatMap(identity).toMap
  

Другой вариант

 l.flatten.toMap
  

Результат:

 Map(AAA -> 1111, BBB -> 22222, CCC -> 3333)
  

Комментарии:

1. Я бы l.iterator.flatten.toMap