ScalaのSeqの基本的な操作についてまとめていきます。
Scala Seqの基本的な操作
def main(args: Array[String]) : Unit = {
// Seqの宣言
val seq = Seq("a", "b", "c")
println(seq) // List(a, b, c)
// 要素へアクセス
println(seq(0)) // a
println(seq.head) // a
println(seq.last) // c
// 空の可能性があるseqにはheadOption, lastOptionを使用する
println(seq.headOption) // Some(a)
println(Seq().headOption) // None
println(Seq().lastOption) // None
// tail - 先頭以外の要素を取得する
println(seq.tail) // List(b, c)
// init - 末尾以外の要素を取得する
println(seq.init) // List(a, b)
// 要素の追加
println(seq :+ "d") // List(a, b, c, d)
println("z" +: seq) // List(z, a, b, c)
// 追加した際は、別インスタンスが返ってくる(immutable)
val seq2 = seq +: "d"
println(seq eq seq2) // false
// Seqどうしの連結
println(seq ++ seq) // List(a, b, c, a, b, c)
// take - 先頭から要素を抽出
println(seq.take(2)) // List(a, b)
// takeWhile - 条件を満たす限り先頭から抽出を続ける
println(seq.takeWhile(_ != "b")) // List(a)
// dropRight - 末尾から要素を削除
println(seq.dropRight(2)) // List(a)
// filter - 条件に合致する要素のみ抽出
println(seq.filter(_ != "b")) // List(a, b)
// filterNot
println(seq.filterNot(_ == "b")) // List(a, b)
}