scalaプログラミング第16章学習ノート(1)

3843 ワード

Listリストの基本操作
headメソッド取得リストの最初の要素
tailメソッドは、最初の要素以外のリストを取得します.
isEmpty:リストが空かどうかを判断し、空であれば真を返す
Last:リストの最後の要素を取得
init:最後の要素以外の要素を取得
reverse:リストを反転
接頭辞と接尾辞:drop、take、splitAt
xs take nはxsリストの最初のn要素を返し、nがxsより大きい場合.lengthは、xs全体を返します.
xs drop nは、xsリストの前のn個の要素を除くすべての要素を返し、nがxsより大きい場合、xsを返す.lengthは、空のリストを返します.
splitAt操作は、指定した位置でリストを分割し、対偶リストを返します.
xs splitAtnは(xs take n,xs drop n)に等しい
例は次のとおりです.
scala> List(1, 2, 3, 4, 5) take 2

res2: List[Int] = List(1, 2)



scala> List(1, 2, 3, 4, 5) drop 2

res3: List[Int] = List(3, 4, 5)



scala> List(1, 2, 3, 4, 5) splitAt 2

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

要素選択:applyメソッドとindicesメソッドapplyメソッドはランダム要素の選択を実現し、他のタイプと同様に、オブジェクトがメソッド呼び出しの関数位置に現れると、applyメソッドが暗黙的に挿入されます.
scala> val abcde=List('a' ,'b', 'c', 'd', 'e')

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



scala> abcde apply 2

res7: Char = c



scala> abcde(2)

res8: Char = c

xs apply nは(xs drop n)に等価である.headindicesメソッドは、指定したリストのすべての有効なインデックス値からなるクラステーブルを返します.
scala> abcde.indices

res9: scala.collection.immutable.Range = Range(0, 1, 2, 3, 4)

噛み合いリスト:zip
zip操作は、2つのリストを1つの対偶リストにすることができます.
scala> abcde.indices zip abcde

res10: scala.collection.immutable.IndexedSeq[(Int, Char)] = Vector((0,a), (1,b),(2,c), (3,d), (4,e))

2つのリストの長さが一致しない場合、一致しない要素は破棄されます.
scala> abcde zip List(1, 2, 3)

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

zipWithIndexはリスト要素をインデックス値に噛み合う
scala> abcde.zipWithIndex

res12: List[(Char, Int)] = List((a,0), (b,1), (c,2), (d,3), (e,4))

リストの表示:toStringメソッドとmkStringメソッド
toStringアクションは、リストの標準文字列表現を返します.
scala> abcde.toString

res13: String = List(a, b, c, d, e)

他の表現が必要な場合は、mkStringメソッドを使用します.xs mkString(pre,sep,post)では、preは表示される要素の前に接頭辞を必要とする文字列であり、sepは2つの要素間の分割文字列であり、postは最も後ろに表示される接尾辞文字列である.
xs.mkStringはxs mkString(",sep,")に等しい
xs.mkStringはxs mkStringに等しい
scala> abcde mkString ("[", ",", "]")

res15: String = [a,b,c,d,e]



scala> abcde mkString ""

res17: String = abcde



scala> abcde.mkString

res19: String = abcde



scala> abcde mkString ("List(", ", ", ")")

res20: String = List(a, b, c, d, e)

mkStringメソッドには、結果として返されるのではなく、構築された文字列をStringBuilderオブジェクトに追加できるaddStringというバリエーションもあります.
scala> val buf = new StringBuilder

buf: StringBuilder =



scala> abcde addString (buf, "(", ";", ")")

res21: StringBuilder = (a;b;c;d;e)

mkStringメソッドとaddStringメソッドはいずれもListの超特質Iterableから継承されているため,様々な列挙可能な集合クラスに適用できる.