Я предполагаю, что вы пытаетесь реализовать какую-то хеш-таблицу в качестве упражнения. В противном случае вы должны просто использовать java.util.HashMap или java.util.HashTree или подобное.
Для небольшого набора значений, как вы дали выше, ваше решение подойдет. Настоящий вопрос возникнет, когда ваши данные станут намного больше.
Вы определили, что столкновения нежелательны - это правда. Иногда, некоторые знания о вероятных ключах могут помочь вам разработать хорошую хэш-функцию. Иногда можно предположить, что класс ключей будет иметь хороший метод hash()
. Поскольку hash () является методом, определенным Object, каждый класс реализует его. Вам было бы полезно использовать метод hash () вашего ключа, а не создавать новый алгоритм специально для вашей карты.
Если все целочисленные ключи одинаково вероятны, то функция мода распределяет их равномерно по различным сегментам, сводя к минимуму столкновения. Однако, если вы знаете, что ключи будут последовательно пронумерованы, может быть лучше использовать List, чем HashMap - это гарантирует отсутствие коллизий.