My favorite way to do this kind of things is like this:
input.map { case (k,v) => (k.getBytes, v) }(collection.breakOut): List[(Array[Byte], List[Int])]
With this syntax, you are passing to map
the builder it needs to reconstruct the resulting collection. (Actually, not a builder, but a builder factory. Read more about Scala’s CanBuildFrom
s if you are interested.) collection.breakOut
can exactly be used when you want to change from one collection type to another while doing a map
, flatMap
, etc. — the only bad part is that you have to use the full type annotation for it to be effective (here, I used a type ascription after the expression). Then, there’s no intermediary collection being built, and the list is constructed while mapping.