Pessoal,
Criei um HashMap da seguinte maneira:
private HashMap<Long,Circuito> circuitos = new HashMap<Long,Circuito>();
E um “hashCode” na classe Circuito que retorna um long invés de um int:
[code] public long longHashCode(){
int num_de = this.barraDe.getNumero();
int num_para = this.barraPara.getNumero();
int num_circ = this.getNumero();
return (long) (num_circ + num_de * 1e3 + num_para * 1e7);
}[/code]
E estou inserindo os dados no HashMap da seguinte maneira:
circuitos.put(val.longHashCode(),val);
Como eu tenho dezenas de milhares de objetos da classe Circuito, eu tentei fazer isso para otimizar a busca de Circuitos efetuada em um método com a seguinte assinatura:
public Circuito getCircuitoEntreBarras(Barra De, Barra Para, int num_circuito)
Ou seja, um Circuito é procurado a partir de três inteiros e um hashCode que retorna apenas um int irá gerar colisões sobrescevendo chaves no HashMap.
Gostaria da opinião de vocês: a gambiarra foi muito forte? Peguei pesado demais ou não?
PS> Estou querendo não usar SQL no momento…
Obrigado,