F# コレクション型
このトピックを確認することで、F# のコレクション型が特定のニーズに最も適しているかを判断できます。 これらのコレクション型はコレクションと F# のコレクション型がオブジェクト指向観点ではなく関数型プログラミングの観点から設計されている型です System.Collections.Generic の名前空間の要素などの .NET Framework を、は異なります。 具体的には、配列のコレクションにのみ変更可能な要素があります。 したがって、コレクションを変更すると、元のコレクションを変更する代わりに変更したコレクションのインスタンスを作成します。
コレクション型は、オブジェクトが格納されているデータ構造体の型によって異なります。 ハッシュ テーブル、リンク リスト、配列などのデータ構造に使用できる操作は、のさまざまなパフォーマンス特性と別のセットです。
F# のコレクション型
次の表は、F# のコレクション型を示します。
型 |
説明 |
関連リンク |
---|---|---|
順序が指定された、変更できない一連の要素は、同じ入力します。 リンク リストとして実装されます。 |
||
同じ型に連続したデータ要素サイズは固定で、ベース、変更可能なコレクション。 |
||
1 種類のすべての型である論理的な一連の要素です。 シーケンスは大きい場合に、特に便利、順序付けられたでは、必ずしもすべての要素を使用するとことはありません。 シーケンスの個々の要素は必要な場合にのみ計算されるため、すべての要素が使用するシーケンスは、リストでよく実行できます。 シーケンスは IEnumerable<T>のエイリアスです seq<'T> の型で表されます。 したがって、IEnumerable を実装する任意の .NET Framework 型をシーケンスとして使用できます。 |
||
要素のディクショナリ。 要素はキーによってアクセスします。 |
||
比較には、キー値の IComparable のインターフェイスの実装を使用する F# の構造的な比較関数である、バイナリ ツリーに基づく変更できないセット。 |
関数の表
このセクションでは、F# のコレクション型で使用できる関数を比較します。 関数の計算の複雑度は、N は、最初のコレクションのサイズである、M、2 番目のコレクションのサイズが指定されていれば場合は、あります。 ダッシュ (-) この関数がコレクションで使用できないことを示します。 シーケンスが限定的に評価するため、Seq.distinct などの関数は O (1) である可能性があります (列挙した場合、シーケンスのパフォーマンスに影響しますが、すぐに制御を返すため、1)。
Function |
配列 |
リスト |
Sequence |
マップ |
Set |
説明 |
---|---|---|---|---|---|---|
append |
O (M) |
O (n) |
O (n) |
- |
- |
2 番目のコレクションの要素に続く最初のコレクションの要素を含む新しいコレクションを返します。 |
add |
- |
- |
- |
O (log n) |
O (log n) |
追加された要素を持つ新しいコレクションを返します。 |
average |
O (n) |
O (n) |
O (n) |
- |
- |
コレクション内の要素の平均を返します。 |
averageBy |
O (n) |
O (n) |
O (n) |
- |
- |
各要素に適用される指定された関数の結果の平均を返します。 |
blit |
O (n) |
- |
- |
- |
- |
配列のセクションをコピーします。 |
cache |
- |
- |
O (n) |
- |
- |
シーケンスの数の要素に格納します。 |
cast |
- |
- |
O (n) |
- |
- |
指定された型に要素を変換します。 |
choose |
O (n) |
O (n) |
O (n) |
- |
- |
指定された関数 f をリストの各要素 x に適用します。 Some(f(x))関数がを返す各要素の結果を含むリストを返します。 |
collect |
O (n) |
O (n) |
O (n) |
- |
- |
指定された関数をコレクションの各要素に適用し、すべての結果を連結して、結合リストを返します。 |
compareWith |
- |
- |
O (n) |
- |
- |
指定された比較関数、要素ごとに、要素を使用して 2 二つのシーケンスを比較します。 |
concat |
O (n) |
O (n) |
O (n) |
- |
- |
指定された列挙体の列挙体を、1 つの連結された列挙体として結合します。 |
contains |
- |
- |
- |
- |
O (log n) |
設定した要素が含まれている場合、true を返します。 |
containsKey |
- |
- |
- |
O (log n) |
- |
要素がマップのドメインにあるかどうかをテストします。 |
count |
- |
- |
- |
- |
O (n) |
セット内の要素数を返します。 |
countBy |
- |
- |
O (n) |
- |
- |
キー生成関数をシーケンスの各要素に適用し、元のシーケンスの生成の一意キーと数を格納するシーケンスを返します。 |
copy |
O (n) |
- |
O (n) |
- |
- |
コレクションをコピーします。 |
create |
O (n) |
- |
- |
- |
- |
最初にある特定の値である要素全体の配列を作成します。 |
delay |
- |
- |
O (1) |
- |
- |
指定したシーケンスの遅延指定から作成されたシーケンスを返します。 |
difference |
- |
- |
- |
- |
O (n) ログ M * |
最初のセットから削除される 2 番目のセットの要素を含む新しいセットを返します。 |
distinct |
O () * 1 |
エントリの汎用ハッシュと等価比較に従って、重複するエントリを含まないシーケンスを返します。 要素がシーケンス内に複数回発生した場合、それ以降の生成は破棄されます。 |
||||
distinctBy |
O () * 1 |
指定されたキー生成関数はを返します。キーの汎用ハッシュと等価比較に従って、重複するエントリを含まないシーケンスを返します。 要素がシーケンス内に複数回発生した場合、それ以降の生成は破棄されます。 |
||||
empty |
O (1) |
O (1) |
O (1) |
O (1) |
O (1) |
空のコレクションを作成します。 |
exists |
O (n) |
O (n) |
O (n) |
O (log n) |
O (log n) |
シーケンスのすべての要素が、指定された述語を満たすかどうかをテストします。 |
exists2 |
O (n)、M (分) |
- |
O (n)、M (分) |
のペアの入力シーケンスの対応する要素が、指定された述語を満たすかどうかをテストします。 |
||
fill |
O (n) |
特定の値に配列の要素の範囲を設定します。 |
||||
filter |
O (n) |
O (n) |
O (n) |
O (n) |
O (n) |
指定された述語が trueを返すコレクションの要素のみを含む新しいコレクションを返します。 |
find |
O (n) |
O (n) |
O (n) |
O (log n) |
- |
指定した関数が true を返す最初の要素を返します。 そのような要素が存在しない場合は、KeyNotFoundException を返します。 |
findIndex |
O (n) |
O (n) |
O (n) |
- |
- |
指定した述語を満たす配列内の最初の要素のインデックスを返します。 述語を満たす要素が KeyNotFoundException を発生させます。 |
findKey |
- |
- |
- |
O (log n) |
- |
コレクション内の各マッピングで関数を評価し、true関数がを返す最初のマッピングのキーを返します。 そのような要素が存在しない場合、この関数は KeyNotFoundException を発生させます。 |
fold |
O (n) |
O (n) |
O (n) |
O (n) |
O (n) |
計算にアキュムレータ引数を使用しながら、コレクションの各要素に関数を適用します。 f 入力関数がで、要素が i0…場合、この関数の計算 f (… f (s) i0…)。 |
fold2 |
O (n) |
O (n) |
- |
- |
- |
計算にアキュムレータ引数を使用しながら、2 つのコレクションの対応する要素に関数を適用します。 各コレクションは同じサイズである必要があります。 f 入力関数がで、要素が i0 j0…、… jN 場合、この関数の計算 f (… f (s) i0 j0…) jN。 |
foldBack |
O (n) |
O (n) |
- |
O (n) |
O (n) |
計算にアキュムレータ引数を使用しながら、コレクションの各要素に関数を適用します。 f 入力関数がで、要素が i0…場合は、を計算 i0 f (…) の f (s)。 |
foldBack2 |
O (n) |
O (n) |
- |
- |
- |
計算にアキュムレータ引数を使用しながら、2 つのコレクションの対応する要素に関数を適用します。 各コレクションは同じサイズである必要があります。 f 入力関数がで、要素が i0 j0…、… jN 場合は、を計算 i0 f (j0… jN の f (s) )。 |
forall |
O (n) |
O (n) |
O (n) |
O (n) |
O (n) |
コレクションのすべての要素が、指定された述語を満たすかどうかをテストします。 |
forall2 |
O (n) |
O (n) |
O (n) |
- |
- |
コレクションの対応するすべての要素が、指定された述語をペア単位で満たすかどうかをテストします。 |
n 番目または取得します。 |
O (1) |
O (n) |
O (n) |
- |
- |
インデックスを持つコレクションから要素を返します。 |
head |
- |
O (1) |
O (1) |
- |
- |
コレクションの最初の要素を返します。 |
init |
O (n) |
O (n) |
O (1) |
- |
- |
ディメンション、およびジェネレーター関数を持つコレクションの要素を計算するために作成します。 |
initInfinite |
- |
- |
O (1) |
- |
- |
シーケンスが生成されます、は、一連の要素特定の関数を呼び出して、反復処理されるとき。 |
intersect |
- |
- |
- |
- |
O (log n) * M ログ |
2 セットの積集合を計算します。 |
intersectMany |
- |
- |
- |
- |
O (N1 N2…) * |
セットのシーケンスの積集合を計算します。 シーケンスは空である必要があります。 |
isEmpty |
O (1) |
O (1) |
O (1) |
O (1) |
- |
コレクションが空の場合 true を返します。 |
isProperSubset |
- |
- |
- |
- |
O (n) ログ M * |
最初のセットのすべての要素が 2 番目のセットに含まれ、2 番目のセットに少なくとも 1 個の要素は最初のセットにありません true を返します。 |
isProperSuperset |
- |
- |
- |
- |
O (n) ログ M * |
2 番目のセットのすべての要素が最初のセットに存在する場合は、最初の 1 文字以上の要素が 2 番目のセットに存在しない true を返します。 |
isSubset |
- |
- |
- |
- |
O (n) ログ M * |
最初のセットのすべての要素が 2 番目のセットに存在 true を返します。 |
isSuperset |
- |
- |
- |
- |
O (n) ログ M * |
2 番目のセットのすべての要素が最初のセットに存在 true を返します。 |
iter |
O (n) |
O (n) |
O (n) |
O (n) |
O (n) |
指定された関数をコレクションの各要素に適用します。 |
iteri |
O (n) |
O (n) |
O (n) |
- |
- |
指定された関数をコレクションの各要素に適用します。 関数に渡される整数は要素のインデックスを示します。 |
iteri2 |
O (n) |
O (n) |
- |
- |
- |
2 種類の配列内の一致するインデックスの要素のペアに、指定された関数を適用します。 関数に渡される整数は要素のインデックスを示します。 2 種類の配列は同じ長さである必要があります。 |
iter2 |
O (n) |
O (n) |
O (n) |
- |
- |
2 種類の配列内の一致するインデックスの要素のペアに、指定された関数を適用します。 2 種類の配列は同じ長さである必要があります。 |
length |
O (1) |
O (n) |
O (n) |
- |
- |
コレクションの要素数を返します。 |
map |
O (n) |
O (n) |
O (1) |
- |
- |
要素が配列の各要素に指定された関数を適用し、その結果コレクションを構築します。 |
map2 |
O (n) |
O (n) |
O (1) |
- |
- |
要素に 2 個のコレクションの対応する要素に指定された関数をペアに適用し、その結果コレクションを構築します。 2 個の入力配列は同じ長さである必要があります。 |
map3 |
- |
O (n) |
- |
- |
- |
要素に 3 個のコレクションの対応する要素に指定された関数を同時に適用し、その結果コレクションを構築します。 |
mapi |
O (n) |
O (n) |
O (n) |
- |
- |
要素が配列の各要素に指定された関数を適用した結果である配列を作成します。 関数に渡される整数のインデックスは、変換する要素のインデックスを示します。 |
mapi2 |
O (n) |
O (n) |
- |
- |
- |
要素に 2 個のコレクションの対応する要素に指定された関数をペアに適用し、その結果を要素のインデックスを渡しますコレクションを構築します。 2 個の入力配列は同じ長さである必要があります。 |
max |
O (n) |
O (n) |
O (n) |
- |
- |
[最大値] の演算子を使用して比較されるコレクションの最大の要素を返します。 |
maxBy |
O (n) |
O (n) |
O (n) |
- |
- |
関数の結果を [最大値] を使用して比較されるコレクションの最大の要素を返します。 |
maxElement |
- |
- |
- |
- |
O (log n) |
指示に従ってセットの大きな要素が使用されますセットに返します。 |
min |
O (n) |
O (n) |
O (n) |
- |
- |
[最小値] の演算子を使用して比較されるコレクション最小の要素を返します。 |
minBy |
O (n) |
O (n) |
O (n) |
- |
- |
関数の結果を [最小値] の演算子を使用して比較されるコレクション最小の要素を返します。 |
minElement |
- |
- |
- |
- |
O (log n) |
指示に従ってセットの最小要素が使用されますセットに返します。 |
ofArray |
- |
O (n) |
O (1) |
O (n) |
O (n) |
指定された配列と同じ要素を含むコレクションを作成します。 |
ofList |
O (n) |
- |
O (1) |
O (n) |
O (n) |
指定されたリストと同じ要素を含むコレクションを作成します。 |
ofSeq |
O (n) |
O (n) |
- |
O (n) |
O (n) |
指定されたシーケンスと同じ要素を含むコレクションを作成します。 |
pairwise |
- |
- |
O (n) |
- |
- |
2 番目の要素の先行処理としてのみを返す最初の要素を除いた入力シーケンスの各要素と元のシーケンスを返します。 |
partition |
O (n) |
O (n) |
- |
O (n) |
O (n) |
2 種類のコレクションに分割します。 最初のコレクションは、指定した述語がを返す true、2 番目のコレクションは false指定した述語がを返す要素が含まれます要素が含まれています。 |
permute |
O (n) |
O (n) |
- |
- |
- |
指定された置換に従ってすべての要素を置換した配列を返します。 |
pick |
O (n) |
O (n) |
O (n) |
O (log n) |
- |
関数が Some を返す最初の結果を返す一連の要素に指定された関数を適用します。 関数は一部を返す、KeyNotFoundException が発生します。 |
readonly |
- |
- |
O (n) |
- |
- |
指定されたシーケンスへオブジェクトのシーケンスとデリゲート オブジェクトを作成します。 この操作は型のキャストを元のシーケンスを再発見し、変更できなくなります。 たとえば、配列は、返されたシーケンスは配列の要素を返しますが、配列に返されたシーケンス オブジェクトをキャストできません。 |
reduce |
O (n) |
O (n) |
O (n) |
- |
- |
計算にアキュムレータ引数を使用しながら、コレクションの各要素に関数を適用します。 最初の要素は 2 個、パスに関数を適用することにより、この関数の先頭 3 番目の要素とともに関数の結果など。 最後に、最終結果を返します。 |
reduceBack |
O (n) |
O (n) |
- |
- |
- |
計算にアキュムレータ引数を使用しながら、コレクションの各要素に関数を適用します。 f 入力関数がで、要素が i0…場合は、を計算 i0 f (…内部 f (1) )。 |
remove |
- |
- |
- |
O (log n) |
O (log n) |
マップのドメインから要素を削除します。 例外は、要素が存在しない場合 |
replicate |
- |
O (n) |
- |
- |
- |
すべての要素を指定された値に設定して、指定の長さのリストを作成します。 |
rev |
O (n) |
O (n) |
- |
- |
- |
要素の順序を反転した新しいリストを返します。 |
scan |
O (n) |
O (n) |
O (n) |
- |
- |
計算にアキュムレータ引数を使用しながら、コレクションの各要素に関数を適用します。 この操作は、2 番目の引数とリストの最初の要素に関数を適用します。 操作は 2 番目の要素とともに関数にこの結果などを渡します。 最後に、操作には、中間結果と最終結果のリストを返します。 |
scanBack |
O (n) |
O (n) |
- |
- |
- |
foldBack 操作は、中間結果と最終結果似ています。 |
singleton |
- |
- |
O (1) |
- |
O (1) |
1 項目だけを格納するシーケンスを返します。 |
set |
O (1) |
- |
- |
- |
- |
ある値の配列の要素を設定します。 |
skip |
- |
- |
O (n) |
- |
- |
基になるシーケンスの N 個の要素をスキップし、シーケンスの残りの要素を格納するシーケンスを返します。 |
skipWhile |
- |
- |
O (n) |
- |
- |
指定された述語が true を返し、シーケンスの残りの要素を格納するとき、反復処理されると、基になるシーケンスの要素をバイパス シーケンスを返します。 |
sort |
O (n log n) の平均 O (N^2 最悪の場合) |
O (n) N のログ |
O (n) N のログ |
- |
- |
要素の値を使用してコレクションを並べ替えます。 要素は [比較]を使用して比較されます。 |
sortBy |
O (n log n) の平均 O (N^2 最悪の場合) |
O (n) N のログ |
O (n) N のログ |
- |
- |
指定されたプロジェクションを提供するキーを使用して、指定したリストを並べ替えます。 キーは [比較]を使用して比較されます。 |
sortInPlace |
O (n log n) の平均 O (N^2 最悪の場合) |
- |
- |
- |
- |
これを変更し、指定された比較関数を使用して配列の要素を並べ替えます。 要素は [比較]を使用して比較されます。 |
sortInPlaceBy |
O (n log n) の平均 O (N^2 最悪の場合) |
- |
- |
- |
- |
これを変更し、キーに指定されたプロジェクションを使用して配列の要素を並べ替えます。 要素は [比較]を使用して比較されます。 |
sortInPlaceWith |
O (n log n) の平均 O (N^2 最悪の場合) |
- |
- |
- |
- |
順序としてファイルを変更し、指定された比較関数を使用して配列の要素を並べ替えます。 |
sortWith |
O (n log n) の平均 O (N^2 最悪の場合) |
O (n) N のログ |
- |
- |
- |
順序と新しいコレクションを返すこととして指定された比較関数を使用して、コレクションの要素を並べ替えます。 |
sub |
O (n) |
- |
- |
- |
- |
開始インデックスと長さで指定されたサブ範囲を含む配列を作成します。 |
sum |
O (n) |
O (n) |
O (n) |
- |
- |
コレクションの要素の合計を返します。 |
sumBy |
O (n) |
O (n) |
O (n) |
- |
- |
コレクションの各要素に関数を適用することで生成された結果の合計を返します。 |
tail |
- |
O (1) |
- |
- |
- |
最初の要素を除いたリストを返します。 |
take |
- |
- |
O (n) |
- |
- |
指定された数までシーケンスの要素を返します。 |
takeWhile |
- |
- |
O (1) |
- |
- |
指定した述語がを返す true 説明し、これ以上の要素を返す間、反復処理されると、基になるシーケンスの要素がシーケンスを返します。 |
toArray |
- |
O (n) |
O (n) |
O (n) |
O (n) |
指定されたコレクションから配列を作成します。 |
toList |
O (n) |
- |
O (n) |
O (n) |
O (n) |
指定されたコレクションからリストを作成します。 |
toSeq |
O (1) |
O (1) |
- |
O (1) |
O (1) |
指定されたコレクションからシーケンスを作成します。 |
truncate |
- |
- |
O (1) |
- |
- |
列挙と N 要素よりも返されないシーケンスを返します。 |
tryFind |
O (n) |
O (n) |
O (n) |
O (log n) |
- |
指定した述語を満たす要素を検索します。 |
tryFindIndex |
O (n) |
O (n) |
O (n) |
- |
- |
そのような要素が存在しない場合、指定された述語を満たすだけ、一致する要素のインデックスを返す最初の要素の検索、または None。 |
tryFindKey |
- |
- |
- |
O (log n) |
- |
指定した述語を満たすコレクション内の最初のマッピングのキーを返します。そのような要素が存在しない場合は、None を返します。 |
tryPick |
O (n) |
O (n) |
O (n) |
O (log n) |
- |
関数は値の Some を返す最初の結果を返す一連の要素に指定された関数を適用します。 そのような要素が存在しない場合、操作は Noneを返します。 |
unfold |
- |
- |
O (n) |
- |
- |
指定された計算を生成する要素を含むシーケンスを返します。 |
union |
- |
- |
- |
- |
O (n) ログ M * |
2 つのセットの和集合を計算します。 |
unionMany |
- |
- |
- |
- |
O (N1 N2…) * |
セットのシーケンスの和集合を計算します。 |
unzip |
O (n) |
O (n) |
O (n) |
- |
- |
ペアのリストを 2 つのリストに分割します。 |
unzip3 |
O (n) |
O (n) |
O (n) |
- |
- |
3 要素の組のリストを 3 つのリストに分割します。 |
windowed |
- |
- |
O (n) |
- |
- |
入力シーケンスから取得されたコンテナー要素のスライド式ウィンドウを生成するシーケンスを返します。 各ウィンドウは、新しい配列として返されます。 |
zip |
O (n) |
O (n) |
O (n) |
- |
- |
ペアのリストに 2 個のコレクションを結合します。 2 つのリストは同じ長さである必要があります。 |
zip3 |
O (n) |
O (n) |
O (n) |
- |
- |
3 要素の組のリストに二つのコレクションを結合します。 各リストは同じ長さである必要があります。 |