IDictionary<TK, TV>
определяет метод IDictionary.ContainsKey(in TK)
и свойство IDictionary.Keys
(типа ICollection
).
Меня интересует (асимптотическая) сложность этого метода и свойства в Dictionary
реализации IDictionary<TK, TV>
.
Рассмотрим определения
IDictionary<int, string> dict = new Dictionary<int, string>();
int k = new Random().Next();
и учтите, что мы добавили в словарь dict
n
уникальных KeyValuePair
с.
Какова ожидаемая (асимптотическая) сложность вызова dict.ContainsKey(k)
? Я надеюсь, что это в O(1)
, но я не нашел его в документации Dictionary.ContainsKey
.
Какова ожидаемая (асимптотическая) сложность вызова dict.Keys.Contains(k)
? Я надеюсь, что это в O(1)
, но я не нашел его в документации Dictionary.Keys
и документации Dictionary.KeyCollection
. Если оно в O(1)
, я не понимаю, почему тип свойства IDictionary.Keys
равен ICollection
, а не ISet
(как, например, в Java).