Niezla funkcja haszujaca

0

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

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1