Hallöchen,
ich habe ein Problem mit meiner angelegten HashMap<Triple, Integer>.
Wobei Triple eine von mir geschriebene Klasse mit drei Feldern der Typen: String, integer, integer.
Ich füge meiner HashMap ein Objekt der Klasse Triple hinzu.
Danach möchte ich mit get aus der HashMap mit einem neu erstellten Triple Objekt der Wert auslesen. Jedoch wird der Eintrag nicht gefunden, obwohl er vorhanden ist (size liefert 1).
Als Code:
<code>
HashMap<Triple, Integer> H = new HashMap<Triple, Integer>();
Triple t1 = new Triple("x2", 0, 1);
Triple t2 = new Triple("x2", 0, 1);
H.put(t1, 5);
System.out.println( H.get(t2) == null ); // liefert true
</code>
Die Klasse Triple enthält auch eine von mir geschriebene equals Funktion, die nach einigen Tests korrekt funktioniert. Diese equals Funktion wird innerhalb von get benutzt.
Herausgefunden habe ich bisher nur, dass sich der HashCode Wert der beiden Objekte unterscheidet, weswegen get wohl nicht im richtigen Tabelleneintrag sucht.
Was mache ich falsch bzw. wie macht man es richtig?
Danke und Grüße,
Rouven
ich habe ein Problem mit meiner angelegten HashMap<Triple, Integer>.
Wobei Triple eine von mir geschriebene Klasse mit drei Feldern der Typen: String, integer, integer.
Ich füge meiner HashMap ein Objekt der Klasse Triple hinzu.
Danach möchte ich mit get aus der HashMap mit einem neu erstellten Triple Objekt der Wert auslesen. Jedoch wird der Eintrag nicht gefunden, obwohl er vorhanden ist (size liefert 1).
Als Code:
<code>
HashMap<Triple, Integer> H = new HashMap<Triple, Integer>();
Triple t1 = new Triple("x2", 0, 1);
Triple t2 = new Triple("x2", 0, 1);
H.put(t1, 5);
System.out.println( H.get(t2) == null ); // liefert true
</code>
Die Klasse Triple enthält auch eine von mir geschriebene equals Funktion, die nach einigen Tests korrekt funktioniert. Diese equals Funktion wird innerhalb von get benutzt.
Herausgefunden habe ich bisher nur, dass sich der HashCode Wert der beiden Objekte unterscheidet, weswegen get wohl nicht im richtigen Tabelleneintrag sucht.
Was mache ich falsch bzw. wie macht man es richtig?
Danke und Grüße,
Rouven