HashMap-Key vergleichen?

2 Antworten

Schreibe dir eine equals- oder compareTo-Methode, die du womöglich der Klasse Datum sogar zufügst. Wenn die 2 Werte, die du mit dem Datum vergleichen möchtest, selbst für Tag und Monat stehen, dann ordne auch sie in ein Datumsobjekt ein.

Enyang 
Fragesteller
 13.05.2017, 14:26

wie würde die compareTo-Methode aussehen beispielsweise? Ich will ja nur den Key mit dem aktuellen Datum vergleichen :/

0
regex9  13.05.2017, 14:49
@Enyang

Als Instanzmethode:

int compareTo(Datum other)
{
// vergleich
}

Oder losgelöst von der Klasse Datum:

int compareTo(Datum date, Datum other)
{
  // vergleich
}

Wie der Vergleich aussieht, bestimmst du. Der Rückgabewert definiert, ob das andere Datum größer (-1), kleiner (1) oder gleich (0) ist.

0
Enyang 
Fragesteller
 13.05.2017, 16:23
@regex9

jetzt habe ich in der Zeile, in der die Methode aufgerufen wird, eine NullPointerException..

0

Unabhängig davon, ob dein Datum-Objekt jetzt ein Key von irgendeiner Map ist, kannst du die Integer vom Datum ganz normal vergleichen, wie jeden beliebigen Integer. Ich nehme an, die beiden Integer, die du bei der Erzeugung übergibst, werden in den Instanzvariablen gespeichert, je nachdem wie du sie genannt hast, kannst du auf sie zugreifen und mit anderen Integern vergleichen.

In etwa so:

Datum datum = new Datum(10,10);
int a = datum._tag;
int b = datum._monat;

if(a <= 13)
{
    //irgendwas...
}

Dafür müssen die Instanzvariablen natürlich public sein. Sonst musst du entsprechende Getter-Methoden einbauen.