Мне просто нужна структура данных, которая действует аналогично Dictionary
, но не только я могу получить доступ к значениям с помощью клавиш, но также получить доступ к клавишам, используя значения.Есть ли что-то вроде «реверсивного словаря»?
Так что было бы что-то вроде этого:
let dict: ReversibleDictionary<String, String> =
["1" : "one", "2" : "two", "3" : "three"]
dict.valueFromKey("1") // "one"
dict.keyFromValue("two") // "2"
Есть ли что-то подобное, что встроенный в стрижа?
Если нет, как я могу создать что-то подобное себе?
Я попытался создать его с помощью 2 NSMutableOrderedSet
и использовать линейный поиск, чтобы найти соответствующие значения. Но я считаю, что слишком сложно использовать линейный поиск, что является сложностью O (n). Доступ к словарю должен быть сложностью O (1), правильно?
Временная сложность доступа к словарю зависит от его реализации. может быть O (1) в случае массивов и O (n) в случае связанных списков – mangusta
Я уверен, что словарь похож на хеш-таблицу. И поиск в хэш-таблице - O (1). @mangusta – Sweeper
В широком смысле словарь - это структура данных для доступа к значению на основе его ключа. это может быть массив или связанный список или хэш или дерево или что-то еще. – mangusta