Struct UnsafeParallelHashMap<TKey, TValue>
An unordered, expandable associative array.
Implements
Namespace: Unity.Collections.LowLevel.Unsafe
Assembly: Unity.Collections.dll
Syntax
public struct UnsafeParallelHashMap<TKey, TValue> : INativeDisposable where TKey : unmanaged, IEquatable<TKey> where TValue : unmanaged
Type Parameters
| Name | Description |
|---|---|
| TKey | The type of the keys. |
| TValue | The type of the values. |
Constructors
UnsafeParallelHashMap(int, AllocatorHandle)
Initializes and returns an instance of UnsafeParallelHashMap.
Declaration
public UnsafeParallelHashMap(int capacity, AllocatorManager.AllocatorHandle allocator)
Parameters
| Type | Name | Description |
|---|---|---|
| int | capacity | The number of key-value pairs that should fit in the initial allocation. |
| AllocatorManager.AllocatorHandle | allocator | The allocator to use. |
Fields
MaxCapacity
The maximum number of elements this type of container can hold.
Declaration
public const int MaxCapacity = 1073741823
Field Value
| Type | Description |
|---|---|
| int |
Properties
Capacity
The number of key-value pairs that fit in the current allocation.
Declaration
public int Capacity { readonly get; set; }
Property Value
| Type | Description |
|---|---|
| int | The number of key-value pairs that fit in the current allocation. |
Exceptions
| Type | Condition |
|---|---|
| InvalidOperationException | Thrown if |
IsCreated
Whether this hash map has been allocated (and not yet deallocated).
Declaration
public readonly bool IsCreated { get; }
Property Value
| Type | Description |
|---|---|
| bool | True if this hash map has been allocated (and not yet deallocated). |
IsEmpty
Whether this hash map is empty.
Declaration
public readonly bool IsEmpty { get; }
Property Value
| Type | Description |
|---|---|
| bool | True if this hash map is empty or the hash map has not been constructed. |
this[TKey]
Gets and sets values by key.
Declaration
public TValue this[TKey key] { get; set; }
Parameters
| Type | Name | Description |
|---|---|---|
| TKey | key | The key to look up. |
Property Value
| Type | Description |
|---|---|
| TValue | The value associated with the key. |
Remarks
Getting a key that is not present will throw. Setting a key that is not already present will add the key.
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | For getting, thrown if the key was not present. |
Methods
Add(TKey, TValue)
Adds a new key-value pair. If the key is already present in the collection, this method should throw, but currently does not! Instead, it silently fails, without replacing said value.
Declaration
public void Add(TKey key, TValue item)
Parameters
| Type | Name | Description |
|---|---|---|
| TKey | key | The key to add. |
| TValue | item | The value to add. |
Remarks
Prefer TryAdd(TKey, TValue) if your intent is to allow graceful failure, as this API will eventually become more strict (and begin to throw).
Exceptions
| Type | Condition |
|---|---|
| ArgumentException | Thrown if the key was already present. |
| InvalidOperationException | Thrown if there is not enough Capacity to contain the added element, and the container can't be resized. |
AsParallelWriter()
Returns a parallel writer for this hash map.
Declaration
public UnsafeParallelHashMap<TKey, TValue>.ParallelWriter AsParallelWriter()
Returns
| Type | Description |
|---|---|
| UnsafeParallelHashMap<TKey, TValue>.ParallelWriter | A parallel writer for this hash map. |
AsReadOnly()
Returns a readonly version of this UnsafeParallelHashMap instance.
Declaration
public UnsafeParallelHashMap<TKey, TValue>.ReadOnly AsReadOnly()
Returns
| Type | Description |
|---|---|
| UnsafeParallelHashMap<TKey, TValue>.ReadOnly | ReadOnly instance for this. |
Remarks
ReadOnly containers point to the same underlying data as the UnsafeParallelHashMap it is made from.
Clear()
Removes all key-value pairs.
Declaration
public void Clear()
Remarks
Does not change the capacity.
ContainsKey(TKey)
Returns true if a given key is present in this hash map.
Declaration
public bool ContainsKey(TKey key)
Parameters
| Type | Name | Description |
|---|---|---|
| TKey | key | The key to look up. |
Returns
| Type | Description |
|---|---|
| bool | True if the key was present. |
Count()
The current number of key-value pairs in this hash map.
Declaration
public readonly int Count()
Returns
| Type | Description |
|---|---|
| int | The current number of key-value pairs in this hash map. |
Dispose()
Releases all resources (memory).
Declaration
public void Dispose()
Dispose(JobHandle)
Creates and schedules a job that will dispose this hash map.
Declaration
public JobHandle Dispose(JobHandle inputDeps)
Parameters
| Type | Name | Description |
|---|---|---|
| JobHandle | inputDeps | A job handle. The newly scheduled job will depend upon this handle. |
Returns
| Type | Description |
|---|---|
| JobHandle | The handle of a new job that will dispose this hash map. |
GetEnumerator()
Returns an enumerator over the key-value pairs of this hash map.
Declaration
public UnsafeParallelHashMap<TKey, TValue>.Enumerator GetEnumerator()
Returns
| Type | Description |
|---|---|
| UnsafeParallelHashMap<TKey, TValue>.Enumerator | An enumerator over the key-value pairs of this hash map. |
GetKeyArray(AllocatorHandle)
Returns an array with a copy of all this hash map's keys (in no particular order).
Declaration
public NativeArray<TKey> GetKeyArray(AllocatorManager.AllocatorHandle allocator)
Parameters
| Type | Name | Description |
|---|---|---|
| AllocatorManager.AllocatorHandle | allocator | The allocator to use. |
Returns
| Type | Description |
|---|---|
| NativeArray<TKey> | An array with a copy of all this hash map's keys (in no particular order). |
GetKeyValueArrays(AllocatorHandle)
Returns a NativeKeyValueArrays with a copy of all this hash map's keys and values.
Declaration
public NativeKeyValueArrays<TKey, TValue> GetKeyValueArrays(AllocatorManager.AllocatorHandle allocator)
Parameters
| Type | Name | Description |
|---|---|---|
| AllocatorManager.AllocatorHandle | allocator | The allocator to use. |
Returns
| Type | Description |
|---|---|
| NativeKeyValueArrays<TKey, TValue> | A NativeKeyValueArrays with a copy of all this hash map's keys and values. |
Remarks
The key-value pairs are copied in no particular order. For all i, Values[i] will be the value associated with Keys[i].
GetValueArray(AllocatorHandle)
Returns an array with a copy of all this hash map's values (in no particular order).
Declaration
public NativeArray<TValue> GetValueArray(AllocatorManager.AllocatorHandle allocator)
Parameters
| Type | Name | Description |
|---|---|---|
| AllocatorManager.AllocatorHandle | allocator | The allocator to use. |
Returns
| Type | Description |
|---|---|
| NativeArray<TValue> | An array with a copy of all this hash map's values (in no particular order). |
Remove(TKey)
Removes a key-value pair.
Declaration
public bool Remove(TKey key)
Parameters
| Type | Name | Description |
|---|---|---|
| TKey | key | The key to remove. |
Returns
| Type | Description |
|---|---|
| bool | True if a key-value pair was removed. |
TryAdd(TKey, TValue)
Adds a new key-value pair.
Declaration
public bool TryAdd(TKey key, TValue item)
Parameters
| Type | Name | Description |
|---|---|---|
| TKey | key | The key to add. |
| TValue | item | The value to add. |
Returns
| Type | Description |
|---|---|
| bool | True if the key-value pair was added. |
Remarks
If the key is already present, this method returns false without modifying the hash map.
TryGetValue(TKey, out TValue)
Returns the value associated with a key.
Declaration
public bool TryGetValue(TKey key, out TValue item)
Parameters
| Type | Name | Description |
|---|---|---|
| TKey | key | The key to look up. |
| TValue | item | Outputs the value associated with the key. Outputs default if the key was not present. |
Returns
| Type | Description |
|---|---|
| bool | True if the key was present. |