This may be a silly question but I am reading about that Hashtables and Dictionaries are faster than a list because they index the items with keys.
I know a List or Array is for elements without values, and a Dictionary is for elements with values. So I would think that it maybe be smart to have a Dictionary with the value that you need as a key and the value equal in all of them?
Update:
Based on the comments what I think I need is a HashSet. This question talks about their performance.
"Faster" depends on what you need them for.
A .NET List is just a slab of continuous memory (this in not a linked list), which makes it extremely efficient to access sequentially (especially when you consider the effects of caching and prefetching of modern CPUs) or "randomly" trough a known integer index. Searching or inserting elements (especially in the middle) - not so much.
Dictionary is an associative data structure - a key can be anything hashable (not just integer index), but elements are not sorted in a "meaningful" way and the access through the known key is not as fast as List's integer index.
So, pick the right tool for the job.
There are some weaknesses to Dictionary/Hashtable vs a List/array as well:
Use what fits the situation. Sometimes that will be a list or an array. Sometimes it will be a Dictionary. You should almost never use a HashTable any more (prefer Dictionary<KeyType, Object> if you really don't what type you're storing).
1It usually is unique, but because there is a small potential for collisions the collection must check the bucket after computing the hash value.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With