Вы должны копировать подписчика каждый раз. В противном случае вы каждый раз изменяете один и тот же объект. Просто используйте s = copy(Subscriber)
Вы хотите использовать что-то, что является относительно главным к размеру Вашего набора. Тот путь, когда Вы циклично выполняетесь вокруг, Вы не закончите на тех же числах, которые Вы просто попробовали.
Исторически 33 походит на популярный выбор, и он имеет тенденцию работать вполне прилично. Никто не знает почему все же. Для получения дополнительной информации, взгляд здесь
У меня было интересное обсуждение с коллегой о хеш-функции недавно. Наши заключения были следующие:
, Если действительно необходимо записать хорошую хеш-функцию, которая минимизирует коллизии больше, чем реализации по умолчанию, доступные на стандартных языках, Вам нужна ученая степень в области математики.
, Если Вы пишете приложения, где пользовательская хеш-функция заметно улучшит производительность Вашего приложения, Вы - Google, и у Вас есть много Математики PhDs, чтобы сделать работу.
Извините к не непосредственно отвечают на Ваш вопрос, но нижняя строка - то, что нет действительно никакой потребности записать Вашу собственную хеш-функцию для Строки. С каким языком Вы работаете? Я предположил бы, что существует простой способ вычислить "достаточно хороший" хэш-код.