Создать SortedMap из итератора в Scala

У меня есть val it:Iterator[(A,B)] и я хочу создать SortedMap[A,B] с элементами, которые я выхожу из Iterator, То, как я делаю это сейчас:

val map = SortedMap[A,B]() ++ it

Он отлично работает, но немного неудобно в использовании. Я проверил SortedMap док, но не смог найти ничего более элегантного. Есть ли что-то вроде:

 it.toSortedMap 

или же

SortedMap.from(it)

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

Редактировать: смешивая обе идеи из ответа @Rex, я придумал это:

SortedMap(it.to:_*)

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

1 ответ

Решение

Функция, которую вы ищете, существует для других комбинаций, но не той, которую вы хотите. Если вашей коллекции требуется только один параметр, вы можете использовать .to[NewColl], Так, например,

import collection.immutable._

Iterator(1,2,3).to[SortedSet]

Так же SortedMap у объекта-компаньона есть приложение varargs, которое можно использовать для создания отсортированных карт следующим образом:

SortedMap( List((1,"salmon"), (2,"herring")): _* )

(Обратите внимание : _* что означает использование содержимого в качестве аргументов). К сожалению это требует Seqне Iterator,

Таким образом, ваш лучший выбор - то, как вы это делаете.

Другие вопросы по тегам