3 Stimmen

Für HashMap würde es helfen, wenn ich nur nach dem Schlüssel suche.

Ich benutze Java 6. Alles wird öffentlich sein, um die Einfachheit zu wahren.

Angenommen, ich habe diese einfache Klasse.

public class A{
    public String name;
    public String data;
}

Ich möchte meine Objekte der Klasse A in einem HashMap speichern. Ich werde das Feld name als den Schlüssel verwenden und das gesamte Objekt als den Wert.

Ich werde nur nach einem Objekt in dieser Map nach name suchen.

Meine Frage ist, muss ich für die Klasse A hashCode und equals implementieren für Suchzwecke? Würde das die Suche beschleunigen? Ich weiß, dass es für Sets hilfreich wäre, bin mir aber nicht sicher über HashMaps, deren Schlüssel nur eine Zeichenkette ist.

5voto

Mark Peters Punkte 78448

Nein, Sie müssen nur hashCode und equals für den Schlüsseltyp implementieren. Wenn Sie es nur als Wert speichern, macht es keinen Unterschied (für Leistung oder Korrektheit), diese Methoden zu implementieren.

2voto

Aravind Yarram Punkte 76365

Ich denke, du musst dir keine Sorgen machen, die 2 Methoden zu implementieren, wenn du einfach String als Schlüssel verwendest. Du musst sie jedoch beide überschreiben, wenn du Class A als Schlüssel verwenden möchtest.

1voto

Martin v. Löwis Punkte 120025

Sie müssen nur hashCode und equals für Schlüssel in einer HashMap unterstützen. Da der Schlüssel ein String ist und nicht ein A, ist es nicht erforderlich, diese zu implementieren - sie werden nicht verwendet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X