F# 컬렉션 형식
이 항목을 검토 하 여 F# 컬렉션 형식을 가장 특정 요구에 적합 한 결정할 수 있습니다.이러한 컬렉션 형식에는.NET Framework 컬렉션 형식에서 다를 System.Collections.Generic 네임 스페이스를 컬렉션 형식 F#는 객체 지향 관점 보다는 기능적 프로그래밍 관점에서 설계 되었다는 점에서.특히, 배열 컬렉션 요소를 변경할 수 있습니다.따라서 컬렉션을 수정할 경우 원래 컬렉션을 변경 하지 않고 수정 된 컬렉션의 인스턴스를 만듭니다.
컬렉션 형식 개체에 저장 된 데이터 구조 형식에서 다를 수도.배열을, 연결 된 목록 및 해시 테이블 같은 데이터 구조에 다른 성능 특성 및 다양 한 작업을 사용할 수 있습니다.
F# 컬렉션 형식
다음 표에서 F# 컬렉션 형식을 보여 줍니다.
형식 |
설명 |
관련된 링크 |
---|---|---|
같은 종류의 요소를 정렬 된, 불변 시리즈연결 된 목록으로 구현 됩니다. |
||
고정 크기, 0부터 시작, 변경 가능한 모두 같은 종류의 연속 된 데이터 요소의 컬렉션입니다. |
||
요소의 모든 종류의 논리 시리즈.시퀀스 큰 컬렉션의 데이터를 정렬 해야 하지만 반드시 모든 요소를 사용 하려면 원하지 않는 경우에 특히 유용 합니다.시퀀스 목록 보다 더 잘 수행할 수 없으면 수 있도록 모든 요소에 사용 되는 요소로만 계산 되는 개별 시퀀스가입니다.Seq <'T> 시퀀스 표시 형식은 IEnumerable <T>에 대 한 별칭입니다.따라서 IEnumerable<T>을 구현하는 .NET Framework 형식은 무엇이든 시퀀스로 사용할 수 있습니다. |
||
변경할 수 있는 사전 요소.요소가 키에 액세스할 수 있습니다. |
||
비교는 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의 목록에 세 개의 컬렉션을 결합합니다.목록의 길이는 같아야 합니다. |