Vergleiche Objekt mit den Daten ( implements Comparator)
Ich habe ein java-Personen-Objekt :
public class People {
String lastname;
String firstname;
String gender;
String datebirth;
String fcolor;
public People(String lastname, String firstname, String gender,String datebirth, String fcolor) {
this.lastname = lastname;
this.firstname = firstname;
this.gender = gender;
this.datebirth = datebirth;
this.fcolor = fcolor;
}
public String getLastname() {
return lastname;
}
public String getFirstname() {
return firstname;
}
public String getGender() {
return gender;
}
public String getFcolor() {
return fcolor;
}
public String getDatebirth() {
return datebirth;
}
}
Ich will einen Komparator zum vergleichen von datebirth (datebirth ist manchmal in diesem format "2/13/1943", manchmal in dieses format "2-13-1943", können Sie mir helfen, wie es zu implementieren.
Begann ich , aber verwirrt :
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.text.DateFormat;
public class CompareDateBirth implements Comparator<People>{
public int compare(People p, People q) {
DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
Date Pdate = null;
Date Qdate= null;
try {
Pdate = df.parse(p.getDatebirth());
Qdate = df.parse(q.getDatebirth());
} catch (Exception e) {
e.printStackTrace();
}
return Pdate.compareTo(Qdate) > 0 ? 1 : 0;
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, speichern Sie das Geburtsdatum mit Hilfe des richtigen Typs - eine
java.util.Date
- Objekt anstelle einesString
- würden Sie nicht dieses problem haben. Die Formatierung ist ein Problem anzeigen.Einer Klasse namens "Menschen"?
Hier ist, wie könnte ich es machen (alle Klassen unten in separaten .java-Dateien in einem Paket namens " Modell):
Schlage ich vor, speichern Sie das Datum in Ihrem java-code, wie lange hat die UNIX-Zeit von diesem Datum, es ist mehr zuverlässig auf allen Plattformen. Auch Sie können manuell aufteilen, das Datum mit Trennzeichen, so dass, wenn es ist ein '-' dann ist Ihre Trennzeichen, sonst, wenn es vorhanden ist '/', dann Sie teilen mit, dass statt.
Diese Weise können Sie extrahieren Sie den Tag, Monat und Jahr, und konstruieren Sie die date-Objekt.