Aardvark.Base


FastConcurrentBigDictIEq<'TKey, 'TValue>

A FastConcurrentBigDictIEq is an alternate implementation of a Dictionary that can optionally act as a stack for all items with the same key. It is implemented as a hashtable with external linking, that uses primes as the table size in order to reduce the danger of funneling.

Constructors

ConstructorDescription
new(hfun, stackDuplicateKeys)
Signature: (hfun:Func<'TKey,int64> * stackDuplicateKeys:bool) -> unit

Create a FastConcurrentBigDictIEq that autmatically grows and shrinks as necessary. If the optional parameter stackDuplicateKeys is set to true, the FastConcurrentBigDictIEq acts as a stack for all items with the same key.

new(hfun, initialCapacity)
Signature: (hfun:Func<'TKey,int64> * initialCapacity:int64) -> unit

Create a FastConcurrentBigDictIEq that autmatically grows and shrinks as necessary, but also specify an initial capacity. If the optional parameter stackDuplicateKeys is set to true, the FastConcurrentBigDictIEq acts as a stack for all items with the same key.

new(...)
Signature: (hfun:Func<'TKey,int64> * initialCapacity:int64 * stackDuplicateKeys:bool) -> unit

Create a FastConcurrentBigDictIEq that autmatically grows and shrinks as necessary, but also specify an initial capacity. If the optional parameter stackDuplicateKeys is set to true, the FastConcurrentBigDictIEq acts as a stack for all items with the same key.

new(hfun, items, stackDuplicateKeys)
Signature: (hfun:Func<'TKey,int64> * items:IEnumerable<KeyValuePair<'TKey,'TValue>> * stackDuplicateKeys:bool) -> unit

Create a FastConcurrentBigDictIEq and initialize it to contain the supplied items. If the optional parameter stackDuplicateKeys is set to true, the FastConcurrentBigDictIEq acts as a stack for all items with the same key.

Instance members

Instance memberDescription
Add(key, value)
Signature: (key:'TKey * value:'TValue) -> unit
Modifiers: abstract

Add the item with the supplied key and the supplied value to the FastConcurrentBigDictIEq.

Add(key, hash, value)
Signature: (key:'TKey * hash:int64 * value:'TValue) -> unit

Add the item with the supplied key and the supplied value to the FastConcurrentBigDictIEq.

Add(item)
Signature: item:KeyValuePair<'TKey,'TValue> -> unit

Add the supplied item to the FastConcurrentBigDictIEq.

AddObject(objkey, objvalue)
Signature: (objkey:obj * objvalue:obj) -> unit
Modifiers: abstract

Add the item with supplied key and the supplied value both supplied as generic objects, to the FastConcurrentBigDictIEq. Note that the supplied key and value are cast to the concrete type of the keys and values used in the FastConcurrentBigDictIEq and this will fail if they are of different types.

AddRange(items)
Signature: items:IEnumerable<KeyValuePair<'TKey,'TValue>> -> unit

Add the supplied items to the FastConcurrentBigDictIEq.

Clear()
Signature: unit -> unit
Modifiers: abstract

Remove all items. Capacity remains unchanged.

Contains(key)
Signature: key:'TKey -> bool

Returns true if the FastConcurrentBigDictIEq contains the item with the supplied key.

Contains(key, hash)
Signature: (key:'TKey * hash:int64) -> bool

Returns true if the FastConcurrentBigDictIEq contains the item with the supplied key.

Contains(key, value)
Signature: (key:'TKey * value:'TValue) -> bool

Returns true if the FastConcurrentBigDictIEq contains the item with the supplied key and the supplied value.

Contains(key, hash, value)
Signature: (key:'TKey * hash:int64 * value:'TValue) -> bool

Returns true if the FastConcurrentBigDictIEq contains the item with the supplied key and the supplied value.

Contains(item)
Signature: item:KeyValuePair<'TKey,'TValue> -> bool

Returns true if the FastConcurrentBigDictIEq contains the item with the supplied KeyValuePair.

ContainsKey(key)
Signature: key:'TKey -> bool
Modifiers: abstract

Returns true if the FastConcurrentBigDictIEq contains the item with the supplied key.

ContainsKey(key, hash)
Signature: (key:'TKey * hash:int64) -> bool

Returns true if the FastConcurrentBigDictIEq contains the item with the supplied key.

CopyKeysTo(array, index)
Signature: (array:'TKey [] * index:int64) -> unit

Copies all keys in the dictionary to the supplied array starting at the supplied index. This may throw a ConcurrentDataModifiedException if data is modified by another task during the operation.

CopyTo(array, index)
Signature: (array:KeyValuePair<'TKey,'TValue> [] * index:int64) -> unit

Copies all KeyValuePairs in the dictionary into the supplied array starting at the supplied index. This may throw a ConcurrentDataModifiedException if data is modified by another task during the operation.

CopyValuesTo(array, index)
Signature: (array:'TValue [] * index:int64) -> unit

Copies all values in the dictionary to the supplied array starting at the supplied index. This may throw a ConcurrentDataModifiedException if data is modified by another task during the operation.

Get(key)
Signature: key:'TKey -> 'TValue

Get the element with the supplied key. Throws an exception if the element is not found. This is an alias of the indexer.

Get(key, defaultValue)
Signature: (key:'TKey * defaultValue:'TValue) -> 'TValue

Get the element with the supplied key. Returns the supplied default value if the element is not found.

Get(key, hash)
Signature: (key:'TKey * hash:int64) -> 'TValue

Get the element with the supplied key. Throws an exception if the element is not found. This is an alias of the indexer.

Get(key, hash, defaultValue)
Signature: (key:'TKey * hash:int64 * defaultValue:'TValue) -> 'TValue

Get the element with the supplied key. Returns the supplied default value if the element is not found.

GetAndRemove(key)
Signature: key:'TKey -> 'TValue

Remove the item with the supplied key from the FastConcurrentBigDictIEq and return it. If multipe entries have the same key, the one that was inserted last is removed. If the item is not found, a KeyNotFoundException is thrown.

GetEnumerator()
Signature: unit -> IEnumerator<KeyValuePair<'TKey,'TValue>>
Modifiers: abstract
GetOrCreate(key, creator)
Signature: (key:'TKey * creator:Func<'TKey,'TValue>) -> 'TValue

Get the element with the supplied key. If the element is not found, the supplied creator is called to create a new element that is added to the FastConcurrentBigDictIEq and returned.

GetOrCreate(key, hash, creator)
Signature: (key:'TKey * hash:int64 * creator:Func<'TKey,'TValue>) -> 'TValue

Get the element with the supplied key. If the element is not found, the supplied creator is called to create a new element that is added to the FastConcurrentBigDictIEq and returned.

GetOrDefault(key)
Signature: key:'TKey -> 'TValue

Get the element with the supplied key. Returns the default value of the value type if the element is not found.

[()]
Signature: unit -> 'TKey
Modifiers: abstract

Get or set the item with the supplied key. If multiple items with the same key are allowed, the FastConcurrentBigDictIEq acts as a stack.

Items
Signature: IEnumerable<KeyValuePair<'TKey,'TValue>>
Keys
Signature: IEnumerable<'TKey>
Modifiers: abstract

Returns all keys in the dictionary. This may throw a ConcurrentDataModifiedException if data is modified by another task during the enumeration.

KeysToArray()
Signature: unit -> 'TKey []

Returns all keys in the dictionary as an array. This may throw a ConcurrentDataModifiedException if data is modified by another task during the operation.

KeyType
Signature: Type
Modifiers: abstract
KeyValuePairs
Signature: IEnumerable<KeyValuePair<'TKey,'TValue>>
Modifiers: abstract

Returns all key value pairs in the FastConcurrentBigDictIEq. This may throw a ConcurrentDataModifiedException if data is modified by another task during the enumeration.

KeyValuePairsForStorage
Signature: IEnumerable<KeyValuePair<'TKey,'TValue>>

Returns all key value pairs in the FastConcurrentBigDictIEq, in such a way, that the stack order is correct when the pairs are put into a new FastConcurrentBigDictIEq in the order they are returned. This may throw a ConcurrentDataModifiedException if data is modified by another task during the enumeration.

LongCount
Signature: int64
Modifiers: abstract

Returns the number of items currently contained in the FastConcurrentBigDictIEq as long.

MaxFillFactor()
Signature: unit -> unit

Setting the maximal fill factor makes it possible to fine-tune the performance for certain applications. Normally this should not be necessary.

MinFillFactor()
Signature: unit -> unit

Setting the minimal fill factor makes it possible to influence the shrinking behaviour of the FastConcurrentBigDictIEq. Normally this should be set to a quater of the maximal fill factor. In order to completely prevent shrinking it can also be set to 0.0f.

ObjectPairs
Signature: IEnumerable<Pair<obj>>
Modifiers: abstract
Remove(key)
Signature: key:'TKey -> bool
Modifiers: abstract

Try to remove the item with the supplied key from the FastConcurrentBigDictIEq. and return true if it was succesfully removed. If multipe entries have the same key, the one that was inserted last is removed. If the item is not found, false is returned.

Remove(key, hash)
Signature: (key:'TKey * hash:int64) -> bool

Try to remove the item with the supplied key from the FastConcurrentBigDictIEq. and return true if it was succesfully removed. If multipe entries have the same key, the one that was inserted last is removed. If the item is not found, false is returned.

Remove(key, value)
Signature: (key:'TKey * value:'TValue) -> bool

Remove the item with the supplied key and the supplied value from the FastConcurrentBigDictIEq. Returns true if the value was removed.

Remove(key, hash, value)
Signature: (key:'TKey * hash:int64 * value:'TValue) -> bool

Remove the item with the supplied key and the supplied value from the FastConcurrentBigDictIEq. Returns true if the value was removed.

Remove(item)
Signature: item:KeyValuePair<'TKey,'TValue> -> bool

Remove the item with the supplied KeyValuePair from the FastConcurrentBigDictIEq. If the item is not found, a KeyNotFoundException is thrown.

ToArray()
Signature: unit -> KeyValuePair<'TKey,'TValue> []

Returns all KeyValuePairs in the dictionary as an array. This may throw a ConcurrentDataModifiedException if data is modified by another task during the operation.

TryAdd(key, value)
Signature: (key:'TKey * value:'TValue) -> bool

Add the item with the supplied key and the supplied value to the FastConcurrentBigDictIEq.

TryAdd(key, hash, value)
Signature: (key:'TKey * hash:int64 * value:'TValue) -> bool

Add the item with the supplied key and the supplied value to the FastConcurrentBigDictIEq.

TryGetValue(key, value)
Signature: (key:'TKey * value:byref<'TValue>) -> bool
Modifiers: abstract

Try to retrieve the value with the supplied key, return true if successful and return the value via the out parameter.

TryGetValue(key, hash, value)
Signature: (key:'TKey * hash:int64 * value:byref<'TValue>) -> bool

Try to retrieve the value with the supplied key, return true if successful and return the value via the out parameter.

TryRemove(key, value)
Signature: (key:'TKey * value:byref<'TValue>) -> bool

Try to reomve the item with the supplied key. If multipe entries have the same key, the one that was inserted last is removed. Returns true if the item was found, which is returned via the out parameter.

TryRemove(key, hash, value)
Signature: (key:'TKey * hash:int64 * value:byref<'TValue>) -> bool

Try to reomve the item with the supplied key. If multipe entries have the same key, the one that was inserted last is removed. Returns true if the item was found, which is returned via the out parameter.

TryRemove(key, value)
Signature: (key:'TKey * value:'TValue) -> bool

Try to reomve the item with the supplied key and the supplied value. If multipe entries match, the one that was inserted last is removed. Returns true if the item was found.

TryRemove(key, hash, value)
Signature: (key:'TKey * hash:int64 * value:'TValue) -> bool

Try to reomve the item with the supplied key and the supplied value. If multipe entries match, the one that was inserted last is removed. Returns true if the item was found.

Values
Signature: IEnumerable<'TValue>
Modifiers: abstract

Returns all values in the FastConcurrentBigDictIEq. This may throw a ConcurrentDataModifiedException if data is modified by another task during the enumeration.

ValuesToArray()
Signature: unit -> 'TValue []

Returns all values in the dictionary as an array. This may throw a ConcurrentDataModifiedException if data is modified by another task during the operation.

ValuesWithKey(key)
Signature: key:'TKey -> IEnumerable<'TValue>

Return all the value with the given key. This method is only useful if multiple item with the same key are allowed.

ValueType
Signature: Type
Modifiers: abstract
ValueWithKeySkip(key, skip)
Signature: (key:'TKey * skip:int64) -> 'TValue

Return the value with the given key, but skip a supplied number of entries with this key. This method is only useful if multiple item with the same key are allowed.

Fork me on GitHub