Поделиться через


Типы коллекций F#

Проанализировав этом разделе, можно определить, костюмы типа коллекции F# наилучшим образом заданная необходимости.Эти типы коллекции отличаются из коллекции тип в платформе .NET Framework, например в пространстве имен System.Collections.Generic в коллекции F#, что типы предназначены из функциональной точки зрения программирования, а не объект- ориентированная перспективу.Точнее, но коллекция массива имеет изменяемую элементы.Поэтому при изменении коллекции создается экземпляр измененной коллекции, а не изменять исходную коллекцию.

Типы коллекций также отличаются в типе структуры данных, в котором хранятся объекты.Структуры данных, как хэш-таблицы, связанные списки и массивы имеют различные характеристики производительности и другой набор доступных операций.

Типы коллекций F#

В следующей таблице показаны типы коллекций F#.

Тип

Описание

Связанные ссылки

List

Упорядоченный, неизменный ряд элементов одного типа.Реализуется в виде связанного списка.

Списки (F#)

Модуль списка

Массив

Фиксированный размер, нулевой-, изменяемых на основе коллекция последовательных элементов данных, всего один и тот же тип.

Массивы (F#)

Модуль массива

Array2D - модуль

Array3D - модуль

seq

Логический ряд элементов, всего из одного типа.Последовательности особенно полезны при наличии большой упорядоченной коллекции данных предполагают, но не обязательно использовать все элементы.Отдельные элементы последовательности вычисляются только при необходимости, поэтому последовательность может выполняться лучше, чем список, если не все элементы используются.Последовательности представлены типом seq<'T>, который является псевдонимом для<T>IEnumerable.Поэтому в качестве последовательности может использоваться любой тип платформы .NET Framework, который реализует IEnumerable<T>.

Последовательности (F#)

Seq - модуль

Сопоставление

Неизменяемый словарь элементов.Элементы осуществляется по ключу.

Модуль сопоставления

Set

Неизменяемый набор, основанный на двоичных деревьях, где сравнение функция сравнения F# структурная, потенциально использует реализации интерфейса IComparable на значениях ключей.

Задайте модуль

Hh967652.collapse_all(ru-ru,VS.110).gifТаблица функций

В этом разделе сравниваются функции, которые доступны для типов коллекции F#.Вычислительная сложность функции, где n - указан размер первой коллекции и M размер второй коллекции, если таковые имеются.Тире (-) указывает на то, что эта функция недоступна в коллекции.Поскольку последовательности вычисляются как Seq.distinct неактивно, функция может быть o (1), поскольку она возвращается немедленно, хотя она по-прежнему влияет на производительность последовательности перечисляно.

Функция

Массив

List

Sequence

Сопоставление

Set

Описание

append

O (M)

O (N)

O (N)

-

-

Возвращает новую коллекцию, содержащую элементы первой коллекции за элементами второй коллекции.

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)

-

-

Объединяет заданное перечисление перечислений в одно сцепленное перечисление.

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 * log 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… in, вычисляет f этой функции (…f i0 (s)…) в.

fold2

O (N)

O (N)

-

-

-

Применяет функцию к соответствующим элементам двух коллекций, накапливаемое значение аргумента передается по потоку в процессе вычисления.Размеры коллекций должны быть идентичны.Если входная функция - f, а элементы… jN i0 и j0… in, вычисляет f этой функции (…(f s i0 j0)...) iN jN.

foldBack

O (N)

O (N)

-

O (N)

O (N)

Применяет функцию к каждому элементу коллекции, передавая накапливаемое значение аргумента по потоку в процессе вычисления.Если входная функция - f, а элементы i0… in, вычисляет f i0 этой функции (… (е в s)).

foldBack2

O (N)

O (N)

-

-

-

Применяет функцию к соответствующим элементам двух коллекций, накапливаемое значение аргумента передается по потоку в процессе вычисления.Размеры коллекций должны быть идентичны.Если входная функция - f, а элементы… jN i0 и j0… in, вычисляет f i0 j0 этой функции (… jN (е в s)).

forall

O (N)

O (N)

O (N)

O (N)

O (N)

Проверяет, все ли элементы в коллекции удовлетворяют данному предикату.

forall2

O (N)

O (N)

O (N)

-

-

Проверяет, удовлетворяет ли все элементы коллекции, соответствующие заданному предикату pairwise.

получите/nth

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) * log

Вычисляет пересечение 2 наборов.

intersectMany

-

-

-

-

O (N1 * N2…)

Вычисляет точку пересечения последовательности наборов.Последовательность не должна быть пустой.

isEmpty

o (1)

o (1)

o (1)

o (1)

-

Возвращает true если коллекция пуста.

isProperSubset

-

-

-

-

O (M * log n)

Возвращает true, если все элементы первого набора во втором наборе, и хотя бы один элемент второго набора не входит в первом наборе.

isProperSuperset

-

-

-

-

O (M * log n)

Возвращает true, если все элементы второго набора в первом наборе и хотя бы один элемент первого набора не во втором наборе.

isSubset

-

-

-

-

O (M * log n)

Возвращает true, если все элементы первого набора во втором наборе.

isSuperset

-

-

-

-

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

-

-

-

Применяет заданную функцию к паре элементов, которые отрисовываются из соответствующих индексов в 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)

-

-

Создает коллекцию, элементы которой результаты применения заданную функцию к соответствующим элементам коллекций pairwise 2.2 Входных массивов должны иметь одинаковую длину.

map3

-

O (N)

-

-

-

Создает коллекцию, элементы которой результаты применения заданную функцию к соответствующим элементам коллекций 3.

mapi

O (N)

O (N)

O (N)

-

-

Создает массив, элементам которого результаты применения заданную функцию к каждому элементу массива.На индекс в виде целого числа, передается функции отображается индекс элемента, преобразования.

mapi2

O (N)

O (N)

-

-

-

Создает коллекцию, элементы которой результаты применения заданную функцию к соответствующим элементам коллекций pairwise 2 также указав индекс элементов.2 Входных массивов должны иметь одинаковую длину.

max

O (N)

O (N)

O (N)

-

-

Возвращает большой элемент в коллекции, сравненной с помощью оператора max.

maxBy

O (N)

O (N)

O (N)

-

-

Возвращает большой элемент в коллекции, сравненной с помощью max с результатом функции.

maxElement

-

-

-

-

O (log n)

Возвращает большой элемент набора в соответствии с порядком то используется для набора.

min

O (N)

O (N)

O (N)

-

-

Возвращает наименее элемент в коллекции, сравненной с помощью оператора min.

minBy

O (N)

O (N)

O (N)

-

-

Возвращает наименее элемент в коллекции, сравненной с помощью оператора min с результатом функции.

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)

-

-

Возвращает последовательность каждого элемента входной последовательности и его предыдущего элемента за исключением первого элемента, который возвращается только как предыдущий элемент второго элемента.

раздел

O (N)

O (N)

-

O (N)

O (N)

Разделяет коллекцию на 2 коллекции.Первая коллекция содержит элементы, для которых заданный предикат возвращает true, а вторая коллекция содержит элементы, для которых заданный предикат возвращает false.

permute

O (N)

O (N)

-

-

-

Возвращает массив со всеми элементами, переставленными в соответствии с указанной перестановкой.

pick

O (N)

O (N)

O (N)

O (log n)

-

Применяет заданную функцию к идущим подряд элементам, возвращая первый результат, когда функция возвращает some.Если функция никогда не возвращает значение some, то возникает KeyNotFoundException.

readonly

-

-

O (N)

-

-

Создает объект последовательности, делегаты к заданной последовательности возражают.Эта операция гарантирует, что приведение типа может и не переоткрыть видоизменить исходной последовательности.Например, если заданный массив, возвращаемая последовательность вернет элементы массива, но нельзя привести возвращенный объект последовательности в массив.

reduce

O (N)

O (N)

O (N)

-

-

Применяет функцию к каждому элементу коллекции, передавая накапливаемое значение аргумента по потоку в процессе вычисления.Запуске этой функции путем применения функции к первым 2 элементами, пропускам этот результат в функцию вместе с третьим элементом и т дФункция возвращает конечный результат.

reduceBack

O (N)

O (N)

-

-

-

Применяет функцию к каждому элементу коллекции, передавая накапливаемое значение аргумента по потоку в процессе вычисления.Если входная функция - f, а элементы i0… in, вычисляет f i0 этой функции (…) в iN-1 (f).

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^2)

O (log n n)

O (log n n)

-

-

Сортирует коллекцию значения элемента.Элементы сравниваются с помощью сравнение.

sortBy

Средний o (n log n)

O (наихудший случае N^2)

O (log n n)

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

-

-

Объединяет 2 коллекции в список пар.Два списка должны иметь одинаковую длину.

zip3

O (N)

O (N)

O (N)

-

-

Объединяет 3 коллекции в список триад.Списки должны иметь одинаковую длину.

См. также

Другие ресурсы

Типы языка F#

Справочник по языку F#