Cara, se você está fazendo isso, é porque provavelmente em algum lugar você está usando o hashCode para uma função que não é a dele.
Isso não é bom, pois algoritmos como o da hashTable e do hashSet são fortemente dependentes de um bom algoritmo hash. Para ver mais detalhes sobre esse assunto, leia o item 8 do capítulo 3 do livro Effective Java, do Joshua Bloch (o cara que simplesmente implementou o Collections framework).
http://java.sun.com/developer/Books/effectivejava/Chapter3.pdf
Agora vamos ao seu problema. Quem deve ter o hashCode máximo igual ao tamanho da tabela? Se for a tabela, basta calcular o hash com o algoritmo do livro e no final fazer:
hashObtido = hashObtido % TAMANHO_TABELA;
(onde aqui TAMANHO_TABELA=975).
Com o operador %, o hashObtido passa a ser então o resto da divisão do hashCalculado pelo tamanho da tabela. Isso dá um número entre 0 e 974, no nesse caso.
Se forem os objetos, a técnica é a mesma. Mas você terá o problema de criar uma dependência dos objetos com a tabela, uma vez que esse valor, 975 teria que estar contido em algum campo “public static final”.
Ficaria assim:
hashObtido = hashObtido % ClasseDaTabela.TAMANHO_TABELA;