Ich habe etwa 8 Datum Variablen (java.util.Date) mit verschiedenen Variablennamen. Was ist der effizienteste/beste Weg, das neueste (max) dieser Daten auszuwählen?Wie bekomme ich die letzte einer Reihe von Datum Variablen in Java
Antwort
Idealerweise speichert sie in einer Sammlung - das könnte sowieso Sinn in Bezug auf Ihre Programmgestaltung machen. Wenn Sie z.B. ein List-Objekt, können Sie tun:
Collections.max(dates);
Date
vergleichbar ist, so fügen sie alle zu einer Liste, und verwenden Sie Collections.max()
die größte (letzte) Datum zu finden:
List<Date> dates = new ArrayList<Date>();
dates.add(foo);
dates.add(bar);
... etc
Date latest = Collections.max(list);
Eigentlich, wenn Sie Lust bekommen möchten, können Sie dies tun:
public static <T extends Comparable<T>> T max(T... items) {
return Collections.max(Arrays.asList(items));
}
Und es so nennen:
Date latest = MyClass.max(foo, bar, fred);
Aber es wird arbeiten auch für jede Comparable
:
Integer biggest = MyClass.max(3, 7, 4, 1);
Dies ist O (N log N), während Collections.max O (N) ist. – Richante
sie in einer Liste setzen und Collections.max
verwenden.
Da Sie alle Ihre Termine in verschiedenen Variablen sind zu speichern, müssen Sie so etwas wie die folgende varargs Funktion tun und alle Ihre Variablen abgehen, um es:
protected Date getMostRecentDate(Date ... dates) {
Arrays.sort(dates);
return myDateArray[dates.length - 1];
}
Dann würden Sie es wie so nennen :
Date mostRecent = getMostRecentDate(date1, date2, date3 /* etc.*/);
Dies ist nicht effizient, da er nur einmal das Maximum erreichen möchte. Das Sortieren dauert O (N * logN), während eine einzige maximale Operation O (N) ist. – Tudor
@Tudor sicher, obwohl in aller Fairness, mit kleinen N (und ich nehme an, dass er kleine N b/c hat, sonst eine ganze Reihe von verschiedenen Feldern zu halten wird eine Menge Arbeit sein), wird es nicht sein viel Unterschied. – stevevls
sie alle zu einer Sammlung hinzufügen und es dann sortieren, oder sie zu einer Sammlung, die in erster Linie, wie in Auftrag gegebene Priorityqueue:
PriorityQueue<Date> dateQ = new PriorityQueue<Date>();
dateQ.add(someDate);
dateQ.add(anotherDate);
dateQ.add(thirdDate); // etc...
System.out.println("Max date is: " + dateQ.peek());
Wie vergleicht sich die Effizienz mit einer Implementierung mit einer regelmäßigen Sammlung? – user6123723
Gute Frage. Dies sollte O (N log N) sein, genauso wie es zu einer Liste hinzugefügt und dann sortiert wird. Collections.max (wie in einigen anderen Antworten angegeben) ist jedoch O (N), also ist es definitiv effizienter als meine Antwort. – mongiesama
- 1. Wie bekomme ich die letzte n Reihe von Pandas Dataframe?
- 2. erhalten Datum für die letzte einer Reihe von Wochen
- 3. erhalten letzte (Datum) Reihe von Gruppen
- 4. Wie bekomme ich das letzte Build-Datum eines Jobs von Jenkins in Java
- 5. Wenn ich eine Datenbank abfrage, wie bekomme ich die 5. Reihe von einer bestimmten Reihe zurück?
- 6. Wie bekomme ich das letzte Commit-Datum vom Git-Repository?
- 7. Finde Datum in einer Reihe
- 8. das letzte Datum Rückkehr aus Reihe von Terminen
- 9. Wie bekomme ich die letzte Nummer von der range() Funktion?
- 10. Wie bekomme ich bestimmte Variablen in einer Datei?
- 11. Wie bekomme ich die letzte von cURL abgerufene URL?
- 12. Wie bekomme ich die Umgebung einer Variablen in R
- 13. Wie bekomme ich die letzte Zelle in einer Zeile einer DataTable?
- 14. Wie bekomme ich die letzte Aktualisierung von Netbeans 7
- 15. Letzte statische Variablen in Java-Schnittstelle
- 16. Wie bekomme ich die nte Reihe von Spark RDD?
- 17. Wie erhalte ich die letzte Modifikationszeit einer Java-Ressource?
- 18. Wie bekomme ich das letzte Element einer Sequenz in XPath?
- 19. Die letzte nicht leere Zelle in einer Reihe bekommen
- 20. Wie bekomme ich das letzte Zeichen einer Zeichenkette in PHP?
- 21. Wie bekomme ich letzte Elemente von strsplit() in R?
- 22. Wie bekomme ich das Datum Bild erstellt in Java
- 23. Geting letzte Datei hochgeladen von einer Reihe von dir
- 24. Wie bekomme ich die letzte ID in Laravel?
- 25. Wie bekomme ich die Gesamtzeit einer MP3-Datei in Java?
- 26. Wie bekomme ich die Speichergröße der Variablen?
- 27. Wie bekomme ich das Datum von Millisekunden
- 28. Wie bekomme ich Datum von dateTime Objekt
- 29. Wie bekomme ich Variablen von einem Objekt?
- 30. Wie bekomme ich den Wurzelknoten von einer TreeMap in Java?
Mehrere Male oder nur einmal? – Tudor
nur einmal. Alle Datumsvariablenwerte können unterschiedlich sein. Ich versuche nur, das neueste Datum effizient zu finden, um es auf einer JSP-Seite anzuzeigen. – user6123723
Ist das neueste immer das Maximum oder müssen Sie zukünftige Daten berücksichtigen? – eabraham