Chapter 12. Collections: Common Sequence Classes

In this chapter on the Scala collections, we’ll examine the most common sequence classes. As mentioned in Recipe 11.1, “Choosing a Collections Class”, the general sequence class recommendations are to use:

  • Vector as your go-to immutable indexed sequence

  • List as your go-to immutable linear sequence

  • ArrayBuffer as your go-to mutable indexed sequence

  • ListBuffer as your go-to mutable linear sequence

Vector

As discussed in Recipe 11.1, “Choosing a Collections Class”, Vector is the preferred immutable indexed sequence class because of its general performance characteristics. You’ll use it all the time when you need an immutable sequence.

Because Vector is immutable, you apply filtering and transformation methods on one Vector to create another one. As a quick preview, these examples show how to create and use a Vector:

val a = Vector(1, 2, 3, 4, 5)
val b = a.filter(_ > 2)   // Vector(3, 4, 5)
val c = a.map(_ * 10)     // Vector(10, 20, 30, 40, 50)

List

If you’re coming to Scala from Java, you’ll quickly see that despite their names, the Scala List class is nothing like the Java List classes, such as the Java ArrayList. The Scala List class is immutable, so its size as well as the elements it contains can’t change. It’s implemented as a linked list, where the preferred approach is to prepend elements. Because it’s a linked list, you typically traverse the list from head to tail, and indeed, it’s often thought of in terms of its ...

Get Scala Cookbook, 2nd Edition 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.