Erstellen hash von string und int

Ich erinnere mich an eclipse und Idee haben, diese Vorlage erzeugt automatisch ein Objekt die hashCode auf Basis seiner Attribute.

Die Strategien, die, wenn eine Zahl und ein string verwendet wird, ist so etwas wie dieses.

  return stringValue.hashCode() + intValue * 32;

Ooor sowas.

Habe ich nicht noch eclipse oder eine Idee an der hand und ich würde gern solche Funktion.

BEARBEITEN

Basierend auf den Antworten, die ich erstellen mit diesem mini-Klasse

    class StringInt {
        private final String s;
        private final int i;

        static StringInt valueOf( String string , int value ) {
            return new StringInt( string, value );
        }
        private StringInt( String string, int value ) {
            this.s = string;
            this.i = value;
        }
        public boolean equals( Object o ) {
            if( o != null && o instanceof StringInt ){
                StringInt other = ( StringInt ) o;
                return this.s == other.s && this.i == other.i;
            }

            return false;
        }
        public int hashCode() {
            return s != null ? s.hashCode() * 37 + i : i;
        }
    }

Diese Klasse ist zur Verwendung als Schlüssel für eine große Speicher Karte ( > 10k Elemente ) ich will nicht zu Durchlaufen, Sie jedes mal zu finden, wenn der String und int sind die gleichen.

Danke.

ps.. mmh wahrscheinlich sollte es werden Namen StringIntKey.

Oscar, ich denke, das ist eine gute Klasse. Die hashCode-Methode ist klar, zuverlässig und performant. Was über Verhütung Zeichenfolge aus null? In Ihrem Konstruktor, werfen eine NPE, wenn Sie null ist. Dann könnte man wieder entfernen, die null-Wachen in equals und hashCode. Schließlich halten Sie eine Kopie von "Effective Java" handy für Fragen wie diese. Die hashCode-Methoden erstellt, die von Eclipse und die IDEE basiert auf diesem Buch.
In Ihrem equals-Methode vergleicht die Zeichenfolge, verwenden Sie equals statt ==.

InformationsquelleAutor OscarRyz | 2009-07-30

Schreibe einen Kommentar