Используйте эти svn move
команда для перемещения файла/папки.
Он не используется напрямую в том смысле, что словарь по-прежнему будет запрашивать ключ для своего хэша, но хеш-значение Int32
равно просто значение, поэтому суть вашего вопроса актуальна, да.
Я считаю, что способ работы словаря .NET не зависит от равномерного распределения хеш-значений. Требуется hash% bucketCount
, где bucketCount
всегда является простым. (Хотя это из памяти - я могу ошибаться.)
Конечно, вы все равно можете получить неэффективный набор ключей, если они окажутся разделенными счетчиком ведра. Однако так будет всегда - хеш-таблица будет только по-настоящему O (1) для всех ключей, если они имеют уникальные хеш-значения и , в таблице содержится набор сегментов для всевозможный хэш :) На самом деле это не проблема. Если вы знаете, что это будет проблемой, тогда да, пользовательский IEqualityComparer
может помочь.
Предполагая, что вы используете реализацию стандартной библиотеки хеш-таблицы, скорее всего, ключом является , а не хеш, даже если ключ является целым числом, именно по той причине, что вы указываете.
Итак, хотя ваша логика относительно распределения хэшей верна, ваше первоначальное предположение, что целочисленные ключи означало бы, что hashes = keys, вероятно, нет.
Если я ошибаюсь, re: .NET, тогда да ладно; это более обобщенный ответ. :)
Прежде чем делать что-нибудь умное, я бы проверил его скорость как есть, и посмотрел, подходит ли это вам. Если это не так, попробуйте умную вещь. Но я ожидал, что лучше оставить это в покое; более важно, чтобы хэши не конфликтовали, и пока это происходит, жизнь будет в порядке.