Scala-lists
Scala-リスト
Scalaリストは配列に非常に似ています。つまり、リストのすべての要素は同じ型を持ちますが、2つの重要な違いがあります。 まず、リストは不変です。つまり、リストの要素は割り当てによって変更できません。 第二に、リストはリンクリストを表しますが、配列はフラットです。
タイプTの要素を持つリストのタイプは、 List [T] と記述されます。
次の例を試してください。さまざまなデータ型に対して定義されたいくつかのリストがあります。
すべてのリストは、テール Nil と* cons:と発音される :: という2つの基本的な構成要素を使用して定義できます。 Nilは空のリストも表します。 上記のリストはすべて、次のように定義できます。
リストの基本操作
リストに対するすべての操作は、次の3つの方法で表現できます。
Sr.No | Methods & Description |
---|---|
1 |
head このメソッドは、リストの最初の要素を返します。 |
2 |
tail このメソッドは、最初の要素を除くすべての要素で構成されるリストを返します。 |
3 |
isEmpty このメソッドは、リストが空の場合はtrueを返し、そうでない場合はfalseを返します。 |
次の例は、上記の方法の使用方法を示しています。
例
上記のプログラムを Demo.scala に保存します。 このプログラムをコンパイルして実行するには、次のコマンドを使用します。
コマンド
出力
リストの連結
例
上記のプログラムを Demo.scala に保存します。 このプログラムをコンパイルして実行するには、次のコマンドを使用します。
コマンド
出力
統一リストの作成
- List.fill()*メソッドを使用すると、同じ要素のゼロ個以上のコピーで構成されるリストを作成できます。 次のプログラム例を試してください。
例
上記のプログラムを Demo.scala に保存します。 このプログラムをコンパイルして実行するには、次のコマンドを使用します。
コマンド
出力
関数の集計
- List.tabulate()*メソッドとともに関数を使用して、リストを集計する前にリストのすべての要素に適用できます。 引数はList.fillの引数と同じです。最初の引数リストは作成するリストの次元を提供し、2番目のリストはリストの要素を説明します。 唯一の違いは、要素が固定される代わりに、関数から計算されることです。
次のプログラム例を試してください。
例
上記のプログラムを Demo.scala に保存します。 このプログラムをコンパイルして実行するには、次のコマンドを使用します。
コマンド
出力
リストの逆順
例
上記のプログラムを Demo.scala に保存します。 このプログラムをコンパイルして実行するには、次のコマンドを使用します。
コマンド
出力
Scalaリストメソッド
以下は、リストで遊んでいるときに使用できる重要な方法です。 利用可能なメソッドの完全なリストについては、Scalaの公式ドキュメントを確認してください。
シニア
説明付きのメソッド
1
このリストに要素を追加します
2
このリストの先頭に要素を追加します。
3
- *def
- :( prefix:List [A]):List [A]*
指定されたリストの要素をこのリストの前に追加します。
4
リストの先頭に要素xを追加します
5
リストのすべての要素を文字列ビルダーに追加します。
6
区切り文字列を使用して、リストのすべての要素を文字列ビルダーに追加します。
7
リスト内のインデックスによって要素を選択します。
8
- def contains(elem:Any):ブール*
リストに指定された値が要素として含まれているかどうかをテストします。
9
- def copyToArray(xs:Array [A]、start:Int、len:Int):ユニット*
リストの要素を配列にコピーします。 指定された配列xsを、このリストのstart以下の長さ(len)の要素で埋めます。
10
重複する要素なしでリストから新しいリストを作成します。
11
最初のn個を除くすべての要素を返します。
12
最後のn個を除くすべての要素を返します。
13
述語を満たす要素の最長のプレフィックスを削除します。
14
- def endsWith [B](that:Seq [B]):ブール値*
リストが指定されたシーケンスで終了するかどうかをテストします。
15
- def equals(that:Any):ブール値*
任意のシーケンスのequalsメソッド。 このシーケンスを他のオブジェクトと比較します。
16
- def exists(p:(A)⇒ Boolean):ブール*
リストのいくつかの要素について述語が成り立つかどうかをテストします。
17
述語を満たすリストのすべての要素を返します。
18
- def forall(p:(A)⇒ Boolean):ブール*
リストのすべての要素について述語が成り立つかどうかをテストします。
19
- def foreach(f:(A)⇒単位):単位*
リストのすべての要素に関数fを適用します。
20
- 定義ヘッド:A *
リストの最初の要素を選択します。
21
リスト内で、インデックス位置の後の最初の出現値のインデックスを検索します。
22
最後を除くすべての要素を返します。
23
リストと別のシーケンス間のマルチセット交差を計算します。
24
- def isEmpty:ブール*
リストが空かどうかをテストします。
25
反復可能オブジェクトに含まれるすべての要素に対して新しい反復子を作成します。
26
最後の要素を返します。
27
リスト内の値の最後の出現のインデックスを検索します。指定された終了インデックスの前または位置。
28
リストの長さを返します。
29
このリストのすべての要素に関数を適用することにより、新しいコレクションを構築します。
30
最大の要素を見つけます。
31
最小の要素を見つけます。
32
- def mkString:文字列*
リストのすべての要素を文字列で表示します。
33
- def mkString(sep:String):文字列*
区切り文字列を使用して、文字列内のリストのすべての要素を表示します。
34
要素を逆順にした新しいリストを返します。
35
順序に従ってリストを並べ替えます。
36
- def startsWith [B](that:Seq [B]、offset:Int):ブール値*
リストの特定のインデックスに特定のシーケンスが含まれているかどうかをテストします。
37
このコレクションの要素を合計します。
38
最初を除くすべての要素を返します。
39
最初の「n」個の要素を返します。
40
最後の「n」要素を返します。
41
リストを配列に変換します。
42
リストを可変バッファーに変換します。
43
このリストをマップに変換します。
44
リストをシーケンスに変換します。
45
リストをセットに変換します。
46
- def toString():文字列*
リストを文字列に変換します。