Problem mit Map. (Value anhand von Key holen)

robthe1337th

Grünschnabel
Hi,

folgendes Problem. Ich habe eine Map:

Code:
Map<Coordinate, List<Integer>> map = s.findPossibleSolvePoint();

Meine Klasse "Coordinate" sieht wie folgt aus:

Code:
public class Coordinate
{
	private int x;
	private int y;

	public Coordinate(final int x, final int y)
	{
		this.x = x;
		this.y = y;
	}

	public int getX()
	{
		return x;
	}

	public int getY()
	{
		return y;
	}

	@Override
	public boolean equals(Object o)
	{
		boolean result = false;

		if (o instanceof Coordinate)
		{
			Coordinate c = (Coordinate) o;
			final int x = c.getX();
			final int y = c.getY();

			if (x == this.x && y == this.y)
			{
				result = true;
			}
		}

		return result;
	}

	@Override
	public String toString()
	{
		return "x=" + this.x + " y=" + this.y;
	}

	@Override
	public int hashCode()
	{
		int result = 17;

		result = result * 31 + x;
		result = result * 31 + y;

		return result;
	}
}

Ich habe in meiner Map nun ein Coordinate-Objekt mit x=1, y=3 (seh ich im Debugger) und dieses will ich dann mit folgendem Code holen:

Code:
Coordinate c = new Coordinate(1, 3);
		List<Integer> list13 = map.get(c);

Ich kriege jedoch immer "null" als Rückgabe-Wert. Ich hab keine Ahnung warum.

Mein Test für Coordinate funktioniert:
Code:
@Test
	public void simple() throws Exception
	{
		Coordinate c = new Coordinate(5, 4);

		Coordinate c1 = new Coordinate(5, 4);

		assertEquals(5, c.getX());
		assertEquals(4, c.getY());

		assertEquals(c, c1);

		assertEquals(c.hashCode(), c1.hashCode());
	}

Kann mir jemand helfen? :(
 
Eigentlich sollte das gehn und bei mir gehts auch (jedenfalls mit einer HashMap). Sicher, dass value != null ist? Kann ja sein, dass dein Methodenaufruf von findPossibleSolvePoint() dir eine Map zurückgibt mit null-values (warum auch immer). Sollte das der Fall sein, dann hast du in der Methode einen Fehler.
 
Eigentlich sollte das gehn und bei mir gehts auch (jedenfalls mit einer HashMap). Sicher, dass value != null ist? Kann ja sein, dass dein Methodenaufruf von findPossibleSolvePoint() dir eine Map zurückgibt mit null-values (warum auch immer). Sollte das der Fall sein, dann hast du in der Methode einen Fehler.

Hm ich weiß nicht genau was du mit null-values meinst aber meine Map sieht wie folgt aus:

bildschirmfoto20110515u.png


Ich hab ehrlich gesagt keine Ahnung warum in der Tabelle soviele null-Werte vorkommen aber vllt. ist das ja normal.

Zur Vollständigkeit hier nochmal die Funktion, die die Map erzeugt:

Code:
public Map<Coordinate, List<Integer>> findPossibleSolvePoint()
	{
		Map<Coordinate, List<Integer>> coordinateToValue = new HashMap<Coordinate, List<Integer>>();

		for (int x = 0; x < 9; x = x + 1)
		{
			for (int y = 0; y < 9; y = y + 1)
			{
				int value = grid.getValue(x, y);

				if (0 == value)
				{
					Coordinate c = new Coordinate(x, y);
					List<Integer> values = new ArrayList<Integer>();
					for (int n = 1; n <= 9; n = n + 1)
					{
						if (tryValue(n, c))
						{
							values.add(n);
						}
					}
					coordinateToValue.put(c, values);
				}
			}
		}

		return coordinateToValue;
	}
 
Mit null-values meinte ich den value-Anteil eines Map-Entrys (key=value) und wie es scheint hatte ich wohl recht, jedenfalls sind auf dem Bild einige null-Werte drin.
 
Zurück