garbage truck

イロイロ。

Scalaメモ(Set)

2007-11-26 21:23:27 | scala
前回のListにひきつづき、今回もコレクションを使ってみようと思いマス。
今回は、Setデス。

scalaのSetは大きくわけてミュータブルのとイミュータブルのと2種類あ
るみたいデス。たとえばHashSetなんかも、scala.collection.mutableパッ
ケージとscala.collection.immutableパッケージに同名のクラスがありま
す。

まずはミュータブルなヤツを使ってみます。やはりテキトーに中身をつめ
て、その内容をすべて表示してみよーかと思いマス。
import scala.collection.mutable.HashSet

val countSet = new HashSet[String]
countSet += "one"
countSet += ("two", "three")

countSet.foreach(println)

こんなカンジのスクリプトを書いて、実行すると
three
two
one

こんな風に結果が表示されました。

上記スクリプトでは、最初にscala.collection.mutableパッケージの
HashSetをインポートしてます。次にnewを使ってHashSetのインスタンス
を作って、要素を3つセットしてます。要素の追加は+=でできるんですね。
で、最後にforeach使って全要素を出力してます。これはListのときと同
じですねー。

次に、イミュータブルなヤツで同じコトをしてみます。
import scala.collection.immutable.HashSet

var countSet:Set[String] = new HashSet[String]
countSet = countSet + "one"
countSet = countSet + "two" + "three"

countSet.foreach(println)

今度はこんなスクリプトで、実行すると
three
two
one

結果はミュータブル版と同じデス。

こっちのスクリプトでは、scala.collection.immutable.HashSetをインポート
してます。次にHashSetのインスタンスを作るんですが、このときソレを代
入するcountSetはvarで型はSet[String]にしときます。そのあと、さっき
と同じく3つ要素を追加します。今回はイミュータブルなので+=は使えま
せん(というかそんなメソッドがない)。なので、+を使って結果をcountSet
の新たな値としています。varで宣言したのはそのためデス。

ミュータブルかどうかが異なる同名のクラスですが、APIは若干チガウの
ですねー。

過去のメモ
  • インストール
  • 定数、変数、関数、forループ
  • 配列
  • List




  • 最新の画像もっと見る