Один вкладыш, который использует breakOut
для получения IntMap
.Он создает map
для новой коллекции, используя фабрику пользовательских компоновщиков CanBuildFrom
, в которой разрешается вызов breakOut
:
Map[Int, String](1 -> "").map(kv => kv)(breakOut[Map[Int, String], (Int, String), immutable.IntMap[String]])
С точки зрения производительности трудно сказать, но он создаетnew IntMap
, проходит через все привязки и добавляет их к IntMap
.Рукописный цикл итератора while
(которому предшествует сопоставление с шаблоном для проверки, является ли исходная карта IntMap
), возможно, приведет к несколько большей производительности.