ArrayListと異なり、基本的に操作は新しいリストを返す形val numbers = List(1, 2, 3, 4)
println(numbers.head) // 1 (先頭要素)
println(numbers.tail) // List(2, 3, 4) (先頭以外)
println(numbers.isEmpty) // false
val list2 = 0 :: list1 // 先頭に0を追加した新しいリスト
val list3 = list1 :+ 5 // 末尾に5を追加した新しいリスト
.head:先頭要素を取り出す.tail:先頭を除いたリスト.isEmpty:空かどうかを判定(true/false):::リストの先頭に要素を追加(新しいリストが返る):+:リストの末尾に要素を追加(新しいリストが返る)参照:サンプルコード
map:リストの各要素に関数を適用し、新しいリストを返す
val doubled = numbers.map(n => n * 2)
filter:条件に合う要素だけを抽出し、新しいリストを返す
val evenNumbers = numbers.filter(n => n % 2 == 0)
参照:サンプルコード
map + flatten
val data = List("a b", "c d")
val result = data.flatMap(str => str.split(" "))
// List("a", "b", "c", "d")
mapで"a b"→["a","b"]に変換flatten)累積的に要素を処理
val numbers = List(1, 2, 3, 4)
val sum = numbers.reduce((a, b) => a + b) // 10
reduce:最初の2つの要素に関数を適用し、その結果と次の要素にまた適用…と繰り返すreduceと似ているが、初期値がある
val numbers = List(1, 2, 3, 4)
val product = numbers.fold(1)((a, b) => a * b) // 24
1)参照:サンプルコード
map:各要素に関数を適用して新しいコレクションを作るflatMap:各要素に関数を適用して、結果のコレクションをフラット化filter:条件に合う要素だけ取り出すfoldLeft/foldRight:左/右から畳み込み計算を行うreduceLeft/reduvceRight:畳み込み(初期値無し)foreach:各要素に副作用関数を実行groupBy:条件ごとにグループ化zip:2つのコレクションを要素ごとに組みにするtake/drop:先頭から/先頭を除いた部分を取得