10.29. Converting a Collection to a String with mkString
Problem
You want to convert elements of a collection to a String
, possibly adding a field separator,
prefix, and suffix.
Solution
Use the mkString
method to
print a collection as a String
. Given
a simple collection:
val
a
=
Array
(
"apple"
,
"banana"
,
"cherry"
)
you can print the collection elements using mkString
:
scala> a.mkString
res1: String = applebananacherry
That doesn’t look too good, so add a separator:
scala> a.mkString(" ")
res2: String = apple banana cherry
That’s better. Use a comma and a space to create a CSV string:
scala> a.mkString(", ")
res3: String = apple, banana, cherry
The mkString
method is
overloaded, so you can also add a prefix and suffix:
scala> a.mkString("[", ", ", "]")
res4: String = [apple, banana, cherry]
If you happen to have a list of lists that you want to convert to
a String
, such as the following array
of arrays, first flatten
the
collection, and then call mkString
:
scala>val a = Array(Array("a", "b"), Array("c", "d"))
a: Array[Array[java.lang.String]] = Array(Array(a, b), Array(c, d)) scala>a.flatten.mkString(", ")
res5: String = a, b, c, d
Discussion
You can also use the toString
method on a collection, but it returns the name of the collection with
the elements in the collection listed inside parentheses:
scala>val v = Vector("apple", "banana", "cherry")
v: scala.collection.immutable.Vector[String] = Vector(apple, banana, cherry) scala>v.toString
res0: String = Vector(apple, banana, cherry)
Get Scala Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.