Java Hashmap Holen Sie sich Wert von Objekt-Schlüssel
Anfänger-Frage: ich habe eine hashmap speichert ein array von Integer-Werten. Der Schlüssel für jeden Wert ist ein Objekt, das aus zwei zahlen (Koordinaten).
Meine Frage: wie Kriege ich einen Wert aus der hashmap, basierend auf den beiden coördinates in meinem Objekt ("mein " Schlüssel")?
Meine Coords-Klasse (mit ein wenig Hilfe von Eclipse):
public class Coords {
int x;
int y;
public Coords(int x, int y) {
super();
this.x = x;
this.y = y;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Coords other = (Coords) obj;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
}
}
Gebäude der Hashmap:
public class BuildMap {
public Coords coords;
public int[] someData = new int[4];
public Random random = new Random();
HashMap<Coords, int[]> map = new HashMap<Coords, int[]>();
public void buildHashMap() {
//coordinates from (0,0) to (31,31)
for (int i = 0; i < 32; i++) {
for (int j = 0; j < 32; j++) {
coords = new Coords(i, j);
//Every Coord gets a few random numbers
for (int k = 0; k < 4; k++) {
someData[k] = random.nextInt(8564);
}
map.put(coords, someData);
}
}
Wenn ich will, um den Zugriff auf das array und die Koordinaten 12,13, wie kann ich es abrufen? Iteration benötigt werden (ich hoffe nicht, möchte ich hinzufügen, 100,000+ Koordinaten und schnellen Zugriff ofcourse).
War ich in der Hoffnung, dies würde die Arbeit etwas in der Linie der
int[] theValues = map.get(new Coords(12,13));
Ich hoffe Ihr könnt mir helfen. vielen Dank im Voraus!
int[] theValues = map.get(new Coords(12,13));
ist, wie es funktioniert.Warum glaubst du Ihr nicht arbeiten?
Das hast du richtig überschrieben, die
equals
Methode in Ihrer Coords
Klasse, so dass Ihre map.get
Aufruf sollte so funktionieren, wie Sie es wollenThx für deine Antwort, aber ich bin immer die gleichen Werte für jede Koordinate auf diese Weise...?
Sie werden immer die gleiche Antwort, weil Sie-füllen Sie es mit der gleichen "zufälligen" Zahl (wenn Sie angeben, den gleichen Samen, erhalten Sie das gleiche Ergebnis)
InformationsquelleAutor user2150129 | 2013-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, wie erstellen Sie die Karte.
Fügen Sie die gleiche array als Wert für jedes element.
Müssen Sie instanziieren Sie ein neues array für jedes element.
InformationsquelleAutor Jim Garrison
Haben Sie einen Fehler: Sie sind nur mit einem array, und viele Verweise auf es.
Verschieben Sie diese Zeile
oberhalb oder unterhalb dieser Linie:
um es zu beheben.
InformationsquelleAutor jlordo