Contains the base traits and objects needed to use and extend Scala's collection library.
Guide
A detailed guide for using the collections library is available
at http://docs.scala-lang.org/overviews/collections/introduction.html.
Developers looking to extend the collections library can find a description
of its architecture at
http://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html.
Using Collections
It is convenient to treat all collections as either
a scala.collection.Traversable or scala.collection.Iterable, as
these traits define the vast majority of operations
on a collection.
Collections can, of course, be treated as specifically as needed, and
the library is designed to ensure that
the methods that transform collections will return a collection of the same
type:
scala> val array = Array(1,2,3,4,5,6)
array: Array[Int] = Array(1, 2, 3, 4, 5, 6)
scala> array map { _.toString }
res0: Array[String] = Array(1, 2, 3, 4, 5, 6)
scala> val list = List(1,2,3,4,5,6)
list: List[Int] = List(1, 2, 3, 4, 5, 6)
scala> list map { _.toString }
res1: List[String] = List(1, 2, 3, 4, 5, 6)
Creating Collections
The most common way to create a collection is to use its companion object as
a factory. The three most commonly used collections are
scala.collection.Seq, scala.collection.immutable.Set, and
scala.collection.immutable.Map.
They can be used directly as shown below since their companion objects are
all available as type aliases in either the scala package or in
scala.Predef
. New collections are created like this:
scala> val seq = Seq(1,2,3,4,1)
seq: Seq[Int] = List(1, 2, 3, 4, 1)
scala> val set = Set(1,2,3,4,1)
set: scala.collection.immutable.Set[Int] = Set(1, 2, 3, 4)
scala> val map = Map(1 -> "one", 2 -> "two", 3 -> "three", 2 -> "too")
map: scala.collection.immutable.Map[Int,String] = Map(1 -> one, 2 -> too, 3 -> three)
It is also typical to prefer the scala.collection.immutable collections
over those in scala.collection.mutable; the types aliased in
the scala.Predef
object are the immutable versions.
Also note that the collections library was carefully designed to include several implementations of
each of the three basic collection types. These implementations have specific performance
characteristics which are described
in the guide.
The concrete parallel collections also have specific performance characteristics which are
described in the parallel collections guide
Converting to and from Java Collections
The scala.collection.JavaConverters object provides a collection
of decorators that allow converting between Scala and Java collections using asScala
and asJava
methods.