다음을 통해 공유


F# 컬렉션 형식

이 항목을 검토 하 여 F# 컬렉션 형식을 가장 특정 요구에 적합 한 결정할 수 있습니다. 이러한 컬렉션 형식에는.NET Framework 컬렉션 형식에서 다를 System.Collections.Generic 네임 스페이스를 컬렉션 형식 F#는 객체 지향 관점 보다는 기능적 프로그래밍 관점에서 설계 되었다는 점에서. 특히, 배열 컬렉션 요소를 변경할 수 있습니다. 따라서 컬렉션을 수정할 경우 원래 컬렉션을 변경 하지 않고 수정 된 컬렉션의 인스턴스를 만듭니다.

컬렉션 형식 개체에 저장 된 데이터 구조 형식에서 다를 수도. 배열을, 연결 된 목록 및 해시 테이블 같은 데이터 구조에 다른 성능 특성 및 다양 한 작업을 사용할 수 있습니다.

F# 컬렉션 형식

다음 표에서 F# 컬렉션 형식을 보여 줍니다.

형식

설명

관련된 링크

List

같은 종류의 요소를 정렬 된, 불변 시리즈 연결 된 목록으로 구현 됩니다.

목록(F#)

모듈 목록

배열

고정 크기, 0부터 시작, 변경 가능한 모두 같은 종류의 연속 된 데이터 요소의 컬렉션입니다.

배열(F#)

배열 모듈

Array2D 모듈

Array3D 모듈

seq

요소의 모든 종류의 논리 시리즈. 시퀀스 큰 컬렉션의 데이터를 정렬 해야 하지만 반드시 모든 요소를 사용 하려면 원하지 않는 경우에 특히 유용 합니다. 시퀀스 목록 보다 더 잘 수행할 수 없으면 수 있도록 모든 요소에 사용 되는 요소로만 계산 되는 개별 시퀀스가입니다. Seq <'T> 시퀀스 표시 형식은 IEnumerable <T>에 대 한 별칭입니다. 따라서 IEnumerable을 구현하는 .NET Framework 형식은 무엇이든 시퀀스로 사용할 수 있습니다.

시퀀스(F#)

Seq 모듈

변경할 수 있는 사전 요소. 요소가 키에 액세스할 수 있습니다.

지도 모듈

Set

비교는 F# 구조 비교 함수를 잠재적으로 사용 하는 구현은 이진 트리를 기반으로 하는 불변 집합의 IComparable 키 값에 대 한 인터페이스.

모듈 설정

테이블 함수

이 섹션에서는 F# 컬렉션 형식에 사용할 수 있는 기능을 비교 합니다. N의 첫 번째 컬렉션의 크기 이며 M 크기의 두 번째 컬렉션의 모든 경우 복잡 한 계산 함수 지정 됩니다. 대시 (-)을 나타내는이 함수는 컬렉션에서 사용할 수 없습니다. 시퀀스에서 계산 되므로 즉시 반환 하기 때문에 여전히 열거 하면 시퀀스의 성능 영향을 하지만 Seq.distinct 같은 함수 o (1) 수 있습니다.

Function

배열

List

Sequence

Set

설명

append

O(M)

O (N)

O (N)

-

-

두 번째 컬렉션의 요소에 의해 뒤에 첫 번째 컬렉션의 요소를 포함 하는 새 컬렉션을 반환 합니다.

추가

-

-

-

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)

-

-

요소 별로 지정 된 비교 함수를 사용 하 여 두 시퀀스를 비교 합니다.

concat

O (N)

O (N)

O (N)

-

-

지정된 열거의 열거를 연결된 단일 열거로 결합합니다.

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 (M * N 로그)

제거할 첫 번째 집합에서 두 번째 집합의 요소를 새 집합을 반환 합니다.

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(min(N,M))

-

O(min(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)

-

-

-

두 컬렉션의 해당 요소에 함수를 적용하여 계산을 통해 누적기 인수를 스레딩합니다. 컬렉션의 크기는 동일해야 합니다. 입력된 함수 f에... i0 및 j0... 요소가 경우 jN,이 함수 f (... 계산 (f s i0 j0)...) iN jN을 계산합니다.

foldBack

O (N)

O (N)

-

O (N)

O (N)

컬렉션의 각 요소에 함수를 적용하여 계산을 통해 누적기 인수를 스레딩합니다. 입력된 함수 f i0에서... 요소는 경우,이 함수 f i0 계산 (...(f s))입니다.

foldBack2

O (N)

O (N)

-

-

-

두 컬렉션의 해당 요소에 함수를 적용하여 계산을 통해 누적기 인수를 스레딩합니다. 컬렉션의 크기는 동일해야 합니다. 입력된 함수 f에... i0 및 j0... 요소가 경우 jN,이 함수 f i0 j0 계산 (...(f s jN))입니다.

forall

O (N)

O (N)

O (N)

O (N)

O (N)

컬렉션의 모든 요소가 지정 된 조건자에 부합 하는지 여부를 테스트 합니다.

forall2

O (N)

O (N)

O (N)

-

-

모든 해당 요소는 컬렉션의 pairwise 지정 된 조건자를 만족 하는지 테스트 합니다.

가져오기 / 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 로그)

두 집합의 교집합을 계산합니다.

intersectMany

-

-

-

-

O (N1 * N2...)

집합 시퀀스의 교집합을 계산합니다. 시퀀스는 비어 있어야 합니다.

isEmpty

O (1)

O (1)

O (1)

O (1)

-

반환 true 컬렉션이 비어 있는 경우.

isProperSubset

-

-

-

-

O (M * N 로그)

반환 true 첫 번째 집합의 모든 요소가 두 번째 집합에과 하나 이상의 요소가 두 번째 집합의 첫 번째 집합에 없는 경우.

isProperSuperset

-

-

-

-

O (M * N 로그)

반환 true 두 번째 집합의 모든 요소가 첫 번째 집합에과 하나 이상의 요소가 첫 번째 집합의 두 번째 집합에 없는 경우.

isSubset

-

-

-

-

O (M * N 로그)

반환 true 첫 번째 집합의 모든 요소가 두 번째 집합에 있는 경우.

isSuperset

-

-

-

-

O (M * N 로그)

반환 true 두 번째 집합의 모든 요소가 첫 번째 집합에 있으면.

iter

O (N)

O (N)

O (N)

O (N)

O (N)

지정된 함수를 컬렉션의 각 요소에 적용합니다.

iteri

O (N)

O (N)

O (N)

-

-

지정된 함수를 컬렉션의 각 요소에 적용합니다. 함수에 전달 되는 정수 인덱스의 요소를 나타냅니다.

iteri2

O (N)

O (N)

-

-

-

주어진된 함수에서 두 배열의 인덱스가 일치에서 그려진 요소 쌍에 적용 됩니다. 함수에 전달 되는 정수 인덱스의 요소를 나타냅니다. 두 배열의 길이가 있어야 합니다.

iter2

O (N)

O (N)

O (N)

-

-

주어진된 함수에서 두 배열의 인덱스가 일치에서 그려진 요소 쌍에 적용 됩니다. 두 배열의 길이가 있어야 합니다.

length

O (1)

O (N)

O (N)

-

-

컬렉션에서 요소의 개수를 반환합니다.

map

O (N)

O (N)

O (1)

-

-

배열의 각 요소에 지정 된 함수를 적용 한 결과 요소가 있는 컬렉션을 만듭니다.

map2

O (N)

O (N)

O (1)

-

-

Pairwise 두 컬렉션의 해당 요소에 지정 된 함수를 적용 한 결과 요소가 있는 컬렉션을 만듭니다. 두 입력된 배열의 길이가 있어야 합니다.

map3

-

O (N)

-

-

-

세 컬렉션의 해당 요소에 지정 된 함수를 동시에 적용 한 결과 요소가 있는 컬렉션을 만듭니다.

mapi

O (N)

O (N)

O (N)

-

-

배열의 각 요소에 지정 된 함수를 적용 한 결과 요소가 있는 배열을 만듭니다. 함수에 전달 되는 정수 인덱스 변환할 요소의 인덱스를 나타냅니다.

mapi2

O (N)

O (N)

-

-

-

Pairwise 또한 요소의 인덱스가 전달 두 컬렉션의 해당 요소에 지정 된 함수를 적용 한 결과 요소가 있는 컬렉션을 만듭니다. 두 입력된 배열의 길이가 있어야 합니다.

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)

-

-

입력된 시퀀스의 두 번째 요소는 선행으로 반환 된 첫 번째 요소를 제외 하 고 선행 작업 시퀀스의 각 요소를 반환 합니다.

partition

O (N)

O (N)

-

O (N)

O (N)

컬렉션에 두 개의 컬렉션을 분할합니다. 첫 번째 컬렉션에 지정 된 조건자 반환 요소가 true, 두 번째 컬렉션의 요소를 지정 된 조건자 반환 포함 false.

permute

O (N)

O (N)

-

-

-

모든 요소가 지정된 순열에 따라 배치된 배열을 반환합니다.

pick

O (N)

O (N)

O (N)

O (log N)

-

주어진된 함수는 첫 번째 결과 일부 함수를 반환 반환 연속 요소에 적용 됩니다. 함수는 일부를 반환 하는 경우 KeyNotFoundException 발생 합니다.

readonly

-

-

O (N)

-

-

대리자 개체에 지정 된 시퀀스 sequence 개체를 만듭니다. 형식 캐스팅 다시 없으며 원래 순서를 변경할 수 있는이 작업을 확인 합니다. 예를 들어, 배열을 지정 하는 경우 요소 배열에 반환 된 시퀀스를 반환 합니다 있지만 반환 된 시퀀스에 개체를 캐스팅할 수 없습니다.

reduce

O (N)

O (N)

O (N)

-

-

컬렉션의 각 요소에 함수를 적용하여 계산을 통해 누적기 인수를 스레딩합니다. 이 함수 처음 두 요소에 함수를 적용 하 여 시작 하 고,이 결과와 세 번째 요소에 함수에 전달 합니다. 이 함수는 최종 결과를 반환합니다.

reduceBack

O (N)

O (N)

-

-

-

컬렉션의 각 요소에 함수를 적용하여 계산을 통해 누적기 인수를 스레딩합니다. 입력된 함수 f i0에서... 요소는 경우,이 함수 f i0 계산 (...(f-1에서)).

remove

-

-

-

O (log N)

O (log N)

맵의 도메인에서 요소를 제거합니다. 요소가 없으면 예외가 발생 합니다.

replicate

-

O (N)

-

-

-

주어진 값으로 설정된 모든 요소와 함께 지정된 길이의 목록을 만듭니다.

rev

O (N)

O (N)

-

-

-

요소가 역순으로 포함된 새 목록을 반환합니다.

scan

O (N)

O (N)

O (N)

-

-

컬렉션의 각 요소에 함수를 적용하여 계산을 통해 누적기 인수를 스레딩합니다. 이 작업이 함수의 두 번째 인수 목록의 첫 번째 요소에 적용 됩니다. 다음 작업이 결과이 함수 함께 두 번째 요소를 전달합니다. 마지막으로 작업 목록 중간 결과 및 최종 결과 반환합니다.

scanBack

O (N)

O (N)

-

-

-

FoldBack 작업 비슷하지만 중간 및 최종 결과 반환 합니다.

singleton

-

-

O (1)

-

O (1)

하나의 항목을 생성 하는 시퀀스를 반환 합니다.

set

O (1)

-

-

-

-

배열 요소에 지정 된 값으로 설정합니다.

skip

-

-

O (N)

-

-

기본 시퀀스의 N개 항목을 건너뛴 다음 시퀀스의 나머지 항목을 생성하는 시퀀스를 반환합니다.

skipWhile

-

-

O (N)

-

-

반환 시퀀스를 반복 하면 기본 시퀀스의 요소를 건너뛰고 조건자에 지정 된 반환 반면, true 다음 시퀀스의 나머지 요소를 생성 합니다.

sort

O(N log N) 평균

최악의 경우 메서드

O(N log N)

O(N log N)

-

-

컬렉션에서 요소 값을 정렬합니다. 요소를 사용 하 여 비교 비교.

sortBy

O(N log N) 평균

최악의 경우 메서드

O(N log N)

O(N log N)

-

-

지정 된 프로젝션에 제공 되는 키를 사용 하 여 주어진된 목록으로 정렬 합니다. 키를 사용 하 여 비교 비교.

sortInPlace

O(N log N) 평균

최악의 경우 메서드

-

-

-

-

위치를 변경할 수 및 지정 된 비교 함수를 사용 하 여 배열의 요소를 정렬. 요소를 사용 하 여 비교 비교.

sortInPlaceBy

O(N log N) 평균

최악의 경우 메서드

-

-

-

-

위치를 변경할 주어진된 투영의 키를 사용 하 여 배열의 요소를 정렬 합니다. 요소를 사용 하 여 비교 비교.

sortInPlaceWith

O(N log N) 평균

최악의 경우 메서드

-

-

-

-

위치를 변경할 주문으로 지정 된 비교 함수를 사용 하 여 배열의 요소를 정렬 합니다.

sortWith

O(N log N) 평균

최악의 경우 메서드

O(N log 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)

-

-

반환 시퀀스를 반복할 때 수확량 기본 시퀀스 요소의 지정 된 조건자 반환 while, 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 (M * N 로그)

두 집합의 합집합을 계산합니다.

unionMany

-

-

-

-

O (N1 * N2...)

집합 시퀀스의 합집합을 계산합니다.

unzip

O (N)

O (N)

O (N)

-

-

한 개의 쌍 목록을 두 개의 목록으로 분할합니다.

unzip3

O (N)

O (N)

O (N)

-

-

한 개의 삼중 쌍 목록을 세 개의 목록으로 분할합니다.

windowed

-

-

O (N)

-

-

입력된 시퀀스에서 그려진 요소의 슬라이딩 창 생성 시퀀스를 반환 합니다. 각 창은 최신 배열로 반환됩니다.

zip

O (N)

O (N)

O (N)

-

-

목록에 두 쌍의 컬렉션을 결합합니다. 두 목록의 길이는 같아야 합니다.

zip3

O (N)

O (N)

O (N)

-

-

Triples의 목록에 세 개의 컬렉션을 결합합니다. 목록의 길이는 같아야 합니다.

참고 항목

기타 리소스

F# 형식

F# 언어 참조