Каков порядок итераций NSSet? - PullRequest
1 голос
/ 17 ноября 2011

Я знаю, что NSSet не сохраняет порядок, и мне стало интересно, как порядок итераций реализован в iOS4 / iOS5 SDK. У вас есть идеи?

1 Ответ

2 голосов
/ 17 ноября 2011

Краткий ответ: Порядок случайный.

Длинный ответ: По определению, порядок не указан.Другими словами, это зависит от реализации.В общих реализациях каждый объект преобразуется в целое число (хеш-код), которое используется для быстрого поиска объекта в наборе (индексация хеш-таблицы), и затем порядок итераций реализуется хеш-кодами (хеш-код в основном представляет собой массивindex).

Обратите внимание, что если два объекта имеют одинаковый хэш-код (но они не равны), их порядок зависит только от последовательности операций вставки / удаления в наборе.

Так какВ реализациях общих хеш-таблиц используются разные хеш-функции для разных размеров данных, при увеличении заданного размера порядок может полностью измениться.

...