Traversable トレイト トップ 可変コレクションおよび不変コレクション コレクション API の概要 目次
最新版は Scala Documentation に移行しました。

コレクション API の概要


Traversable
  Iterable
    Seq
      IndexedSeq
        immutable.Vector
        mutable.ResizableArray
        mutable.ArraySeq
        mutable.StringBuilder
        (StringArray)
      LinearSeq
        immutable.List
        immutable.Stream
        mutable.MutableList
        mutable.Queue
      mutable.Buffer
        mutable.ListBuffer
        mutable.ArrayBuffer
      Range
    Set
      SortedSet
        immutable.TreeSet
      immutable.HashSet
      mutable.HashSet
      mutable.LinkedHashSet
      BitSet
      (immutable.EmptySet, immutable.Set1, ..., immutable.Set4)
    Map
      SortedMap
        immutable.TreeMap
      immutable.HashMap
      mutable.HashMap
      mutable.LinkedHashMap
      (immutable.EmptyMap, immutable.Map1, ..., immutable.Map4)
コレクションの階層
 

最も重要なコレクションクラスは上図に示されている。これらのすべてのクラスに共通な部分が沢山ある。 例えば、全てのコレクションは、クラス名を書いた後で要素を書くという統一された構文で作成することができる:

Traverse(1, 2, 3)
Iterable("x", "y", "z")
Map("x" -> 24, "y" -> 25, "z" -> 26)
Set(Color.red, Color.green, Color.blue)
SortedSet("hello", "world")
Buffer(x, y, z)
IndexedSeq(1.0, 2.0)
LinearSeq(a, b, c)

特定のコレクションの実装にもこの原則が適用される:

List(1, 2, 3)
HashMap("x" -> 24, "y" -> 25, "z" -> 26)

これらのコレクションは、toStringを呼び出すと上の表記方法で表示される。

すべてのコレクションが Traversable によって提供される API をサポートするが、理にかなうところでは型を特殊化している。たとえば、Traversable クラスの map メソッドは別の Traversable を結果として返すが、結果の型はサブクラスでオーバーライドされる。たとえば、Listmap を呼び出しても再び List が返ってき、Setmap を呼び出すと Set が返ってくる、といういう具合だ。

scala> List(1, 2, 3) map (_ + 1)
res0: List[Int] = List(2, 3, 4)
scala> Set(1, 2, 3) map (_ * 2)
res0: Set[Int] = Set(2, 4, 6)

このコレクションライブラリ中のどこでも実装されている振る舞いは戻り値同型の原則 と呼ばれる。

コレクションの階層のクラスのほとんどは基底、不変、可変の3種類とも存在する。唯一の例外は、可変コレクションにのみ存在する Buffer トレイトだ。

これより、これらのクラスを一つづつ見ていく。

続いては、Traversable トレイト


Traversable トレイト トップ 可変および不変のコレクション コレクション API の概要 目次