2020/03/22
- 英単語10words o
- リスニング o
- Scala o
- コンテスト o
Scala
シーケンス
List
List型はSeq型の実装の一つ.
Seq(1, 2, 3) // res0: Seq[Int] = List(1, 2, 3)
Nil
Nil
はオブジェクトであり,空のリストを表す.::
という記号のケースクラスを使ってリストを構成していく.
Nil // res0: scala.collection.immutable.Nil.type = List() 3::Nil // res1: List[Int] = List(3)
リストは値を先頭から辿って取得するため,処理が線形時間となる.しかし,データの挿入や削除に関してのメモリ効率は優れている.
Array
List
とは逆の性質.宣言時にメモリを確保するため,添字を使った要素の取得は一度のアクセスでよい.しかし,宣言時にメモリを確保するという性質上,メモリの効率は悪くなる.
ArrayからListに,ListからArrayに変換することができるtoList
,toArray
が存在し,それぞれに向いている操作ができるようになる.たとえばArrayをListに変換してやることで,map
,flatMap
,filter
,foreach
といったSeq型のメソッドが利用できるようになる.
Set
他言語のSetとかわらない.オブジェクトだが,==
で内部の比較ができる.和集合は++
,差集合は--
,積集合はintersect
となる.
順序
ScalaのSetは順序を維持しない.順序を維持するにはTreeSet
を用いる.
Map
Mapは可変と不変があり,特に指定せず使用した場合は不変.
Mapに対して,toList
を適用するとタプルのリストになる.
val m = Map("a" -> 1, "b" -> 2, "c" -> 3) m.toList // List[(String, Int)] = List((a,1), (b,2), (c,3))