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!

Sie geschrieben die Antwort in der Frage: 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 wollen
Thx 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

Schreibe einen Kommentar