scalaプログラミング第16章学習ノート(4)——Listオブジェクトの方法

2266 ワード

要素からリストを作成する:List.apply
List(1,2,3)は、Listに等価である.apply(1, 2, 3):
scala> List.apply(1, 2, 3)

res0: List[Int] = List(1, 2, 3)

作成範囲:List.range
List.range(from,until)は、fromからuntilに減算されるすべての数値のリストを作成します.注意:末尾untilは範囲外です.
もう1つのバージョンのrangeはstep値を第3のパラメータとして持つことができる.この操作はfromから始まるstep間隔のリスト要素を生成することができる.Stepは正でも負でもよい:
scala> List.range(1, 5)

res1: List[Int] = List(1, 2, 3, 4)



scala> List.range(1, 9, 2)

res2: List[Int] = List(1, 3, 5, 7)



scala> List.range(9, 1, -3)

res3: List[Int] = List(9, 6, 3)

 
噛み合い解除リスト:List.unzip
unzip操作はzipの反対です.zipは2つのリストを対偶リストに構成し、unzipは対偶リストを2つのリストに分割し、そのうちの1つのリストは各対偶の最初の要素からなり、もう1つは2番目の要素からなる.
scala> val zipped = "abcde".toList zip List(1, 2, 3)

zipped: List[(Char, Int)] = List((a,1), (b,2), (c,3))



scala> zipped.unzip

res5: (List[Char], List[Int]) = (List(a, b, c),List(1, 2, 3))

接続リスト:List.flatten、List.concat
flattenメソッドは、リストのリストをパラメータとし、すべての要素リストを接続します.例を次に示します.
scala> val xss = List(List('a', 'b'), List('c'), List('d', 'e'))

xss: List[List[Char]] = List(List(a, b), List(c), List(d, e))

scala> xss.flatten res7: List[Char] = List(a, b, c, d, e)

concatメソッドはflattenと同様で、複数の要素リストに接続できます.複数のリストを繰り返しパラメータとしてメソッドに直接渡します.数量に制限はありません:
scala> List.concat(List('a', 'b'), List('c'))

res9: List[Char] = List(a, b, c)



scala> List.concat(List(), List('b'), List('c'))

res10: List[Char] = List(b, c)



scala> List.concat()

res11: List[Nothing] = List()