BBH
-Biz Branding Hub-
投稿日 : 
2020/10/19
更新日 : 
2020/10/19

【Scala】Seqの基本的な操作

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)
}

Profile

管理人プロフィール

都内でITエンジニアをやってます。
変遷:中規模SES→独立系SIer→Webサービス内製開発
使用技術はその時々でバラバラですが、C#、AWSが長いです。
どちらかと言うとバックエンドより開発が多かったです。
顧客との折衝や要件定義、マネジメント(10名弱程度)の経験あり。
最近はJava+SpringBootがメイン。

Recommend