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:
vala=Array("apple","banana","cherry")
you can print the collection elements using mkString:
scala> a.mkString
res1: String = applebananacherryThat doesn’t look too good, so add a separator:
scala> a.mkString(" ")
res2: String = apple banana cherryThat’s better. Use a comma and a space to create a CSV string:
scala> a.mkString(", ")
res3: String = apple, banana, cherryThe 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.toStringres0: String = Vector(apple, banana, cherry)
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access