# 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.