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 |
