Scalaのコレクションを表す次のデータ構造の紹介です。
Array
=> 配列List
=> リスト構造Vector
=> 追加削除、検索の速度が一定な万能なデータ構造Map
=> キーと値のセットSet
=> 集合Range
=> 範囲
🍮 Array
Array
は一般的なプログラミング言語の配列です。
val arr = Array[Int](1, 2, 3, 4, 5) // 型を明確に指定した定義 |
🎂 List
List
は一度作成したら中身を変更できない、immutable
な構造をしています。
val list: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9) |
List
の特徴は次のとおりです。
List
は先頭へのアクセスは早い- 末尾への要素の追加、ランダムな要素へのアクセスは遅い
Nil
Nil
は空のListを表すオブジェクトです。
val a1 = Nil //=> List() |
::
::
(コンス)はすでにあるList
に要素をつけるメソッドです。
val a1 = 1::Nil //=> List(1) |
++
++
はList
どうしを連結できます。
val a1 = List(1, 2) ++ List(3, 4) //=> List(1, 2, 3, 4) |
mkString
mkString
メソッドはListを結合して文字列にします。
List(1, 2, 3, 4).mkString //=> 1234 |
map
map
メソッドは各要素を加工して新しいList
を返します。
List(1, 2, 3, 4).map(x => x * 2) //=> List(2, 4, 6, 8) |
filter
filter
メソッドは条件にあった要素を抽出した新しいList
を返します。
List(1, 2, 3, 4).filter(x => x % 2 == 0) //=> List(2, 4) |
find
find
メソッドは条件にあった最初の要素を返します。
List(1, 2, 3, 4).find(x => x % 2 == 0) //=> Some(2) |
count
count
メソッドは条件にマッチする要素の件数を返します。
List(1, 2, 3, 4).count(x => x % 2 == 0) //=> 2 |
🐞 Vector
Vector
は要素の追加・削除、ランダムなアクセスで一定の速度で処理を行えるimmutable
なデータ構造です。
// データの追加 |
🎉 Map
Map
はキーとバリューのペアのデータ構造です。
val urls = Map( |
通常のMap
はimmutable
なデータ構造です。
val m = Map("hoge" -> 1, "fuga" -> 2, "pugi" -> 3) |
mutable
なデータ構造のMap
も利用できます。
import scala.collection.mutable |
🐯 Set
Set
は値の集合を表すデータ構造です。Set
も通常はimmutable
なデータ構造です。
val s = Set(1, 2, 3, 4) |
immutable
なデータ構造のSet
も利用できます。
import scala.collection.mutable |
🍄 Range
Range
は範囲を表すオブジェクトでto
やuntil
を使って生成できます。
1 to 5 //=> Range 1 to 5 |