Ответ 1
В сущности, существует два основных способа обработки хеш-коллизий - отдельная цепочка, когда элементы с коллимирующими хеш-кодами хранятся в отдельной структуре данных и открывают адресацию, когда встречные данные хранятся в другом доступном ведре, который был выбран с использованием некоторых алгоритм.
Обе стратегии имеют множество подстраниц, описанных в Википедии. Точная стратегия, используемая конкретной реализацией, не удивительно, специфична для реализации, поэтому авторы могут в любое время изменить ее для чего-то более эффективного, не нарушая предположений своих пользователей.
Этот момент единственный способ узнать, как Swift обрабатывает столкновения, будет дизассемблировать библиотеку (то есть, если вы не работаете в Apple и не имеете доступа к исходному коду). Любопытные люди сделали это до NSDictionary
и решили, что он использует линейное зондирование, самый простой вариант метода открытой адресации.