I have a question about generic collections in C#. If I need to store a collection of items, and I’m frequently going to need to check whether an item is in the collection, would it be faster to use Dictionary instead of List?
I’ve heard that checking if an item is in the collection is linear relative to the size for lists and constant relative to the size for dictionaries. Is using Dictionary and then setting Key and Value to the same object for each key-value pair something that other programmers frequently do in this situation?
Thanks for taking the time to read this.
Yes, yes it is. That said, you probably want to use
HashSetbecause you don’t need both a key and a value, you just need a set of items.It’s also worth noting that
Dictionarywas added in C# 2.0, andHashSetwas added in 3.5, so for all that time inbetween it was actually fairly common to use a Dictionary when you wanted a Set just because that was all you had (without rolling your own). When I was forced to do this I just stuck null in the value, rather than the item as the key and value, but the idea is the same.