11.3. Adding Elements to a List
Problem
You want to add elements to a List that you’re working with.
Solution
“How do I add elements to a List?” is a bit of a trick question, because a
List is immutable, so you can’t
actually add elements to it. If you want a List that is constantly changing, use a
ListBuffer (as described in Recipe 11.2), and then convert it to a List when necessary.
To work with a List, the
general approach is to prepend items to the list with the :: method while assigning the results to a new
List:
scala>val x = List(2)x: List[Int] = List(2) scala>val y = 1 :: xy: List[Int] = List(1, 2) scala>val z = 0 :: yz: List[Int] = List(0, 1, 2)
Rather than continually reassigning the result of this operation
to a new variable, you can declare your variable as a var, and reassign the result to it:
scala>var x = List(2)x: List[Int] = List(2) scala>x = 1 :: xx: List[Int] = List(1, 2) scala>x = 0 :: xx: List[Int] = List(0, 1, 2)
As these examples illustrate, the :: method is right-associative; lists are
constructed from right to left, which you can see in this
example:
scala>val list1 = 3 :: Nillist1: List[Int] = List(3) scala>val list2 = 2 :: list1list2: List[Int] = List(2, 3) scala>val list3 = 1 :: list2list3: List[Int] = List(1, 2, 3)
Note
Any Scala method that ends with a : character is evaluated from right to left. This means that the method is invoked on the right operand. You can see how this works by analyzing the following code, where both methods print the ...
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