Potrzebuje jakas niezla funkcje haszujaca w Javie, powinna miec jakies przesuniecia bitowe, rotaty, mnozenia itp. Nie moze to byc nic super skomplikowanego zeby moj umysl to zalapal, ale nie powinna tez byc banalna. Aha, algorytmy MD5, SHA i pochodne itp odpadaja, to ma byc cos "wlasnego". Haszowanie powinno polegac na tym ze biore sobie pola skladowe jakiejs klasy i cotam z nimi robie sobie. Jesli ktos ma kawalek kodu to prosze o pokozania jako wzor.
0
0
Twoje pytanie rouzmiem w poniższy sposób:
http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html#hashCode()
I prosta funkcja hashująca jest poniżej:
public class SimpleHashBean {
String w;
int x;
Date y;
Long z;
public int hashCode() {
int result;
result = w.hashCode();
result = 31 * result + x;
result = 31 * result + y.hashCode();
result = 31 * result + z.hashCode();
return result;
}
}
pzdr,
y.
0
Hmm, nie chodzilo mi o cos takiego, chodzileo mi raczej o to ze mam Stringa, i mam obliczyc hash na podstawie literek czy czegos. To programik na zajecia z OOP i z wiadomych wzgledow nie moge uzyc String.hsahCode. Pozdro!
0
Pisałeś o składowych klasy, a nie 'jak obliczyć własny hash dla obiektu klasy String'.
Przykład znów brany z sufitu, ale zasada ta sama, tzn. bierzesz składowe obiektu (w tym przypadku znaki) i liczysz wartość tak, by miały na nią wpływ wszystkie składowe obiektu. Zawsze możesz obejrzeć implemenację metody String.hashCode()...
int getStringHash(String s) {
int result = 0;
if (s != null) {
for (int i = 0; i < s.length(); i++) {
result = result + i * s.charAt(i);
}
}
return result;
}
pzdr,
y.