No creo que los valores hash debe ser negativo.
¿Por qué no? Es completamente válido tener códigos hash negativos. La mayoría de las formas de llegar a un código hash, naturalmente, terminan con valores negativos, y todo lo relacionado con ellos debe tener esto en cuenta. Sin embargo, consideraría un enfoque diferente para crear sus códigos hash, p.
int hash = 17;
hash = hash * 31 + srcadd.hashCode();
hash = hash * 31 + dstadd.hashCode();
hash = hash * 31 + sourceport; // I'm assuming this is an int...
hash = hash * 31 + destinationport; // ditto
hash = hash * 31 + protocol.hashCode();
return hash;
No está claro cuáles son los tipos de estas expresiones son, pero supongo que está terminando de tomar el código hash de una cadena ... una cadena que usted realmente no necesita crear en El primer lugar. Si bien hay mejores enfoques para obtener códigos hash para dominios conocidos, el enfoque anterior funciona bien como una técnica de generación de hash de propósito general.
Tenga en cuenta que también ayudaría a la legibilidad de su código si evitó las abreviaturas y utilizó la carcasa de camello, p. sourceAddress
en lugar de srcadd
.
¿Por qué los códigos hash no son negativos? AFAIK, el único requisito para ellos es ser iguales para objetos iguales. Los espacios – user1096188
son agradables. – AHungerArtist