Mam około 8 zmiennych daty (java.util.Date) z różnymi nazwami zmiennych. Jaki jest najlepszy/najlepszy sposób wyboru najnowszych (maksymalnych) dat?Jak uzyskać najnowszą z zestawu zmiennych daty w java
Odpowiedz
Najlepiej przechowywać je w kolekcji - może to mieć sens z punktu widzenia projektowania programu w każdym razie. Jeśli masz np. Lista obiekt, można zrobić:
Collections.max(dates);
Date
jest porównywalna, więc dodać je wszystkie na liście i użyć Collections.max()
znaleźć największe (najnowszy) Data:
List<Date> dates = new ArrayList<Date>();
dates.add(foo);
dates.add(bar);
... etc
Date latest = Collections.max(list);
Właściwie, jeśli chcesz uzyskać fantazyjny, można to zrobić:
public static <T extends Comparable<T>> T max(T... items) {
return Collections.max(Arrays.asList(items));
}
i nazwać tak:
Date latest = MyClass.max(foo, bar, fred);
Ale to będzie również pracować na dowolnym Comparable
:
Integer biggest = MyClass.max(3, 7, 4, 1);
To jest O (N log N), natomiast Collections.max to O (N). – Richante
umieścić je na liście i użyć Collections.max
.
Skoro przechowywania wszystkich dat w różnych zmiennych, trzeba zrobić coś jak na poniższym varargs funkcji i przekazać wszystkie zmienne poza nim:
protected Date getMostRecentDate(Date ... dates) {
Arrays.sort(dates);
return myDateArray[dates.length - 1];
}
Wtedy to nazwać jak tak :
Date mostRecent = getMostRecentDate(date1, date2, date3 /* etc.*/);
To nie jest efektywne, ponieważ chce tylko raz uzyskać maksimum. Sortowanie zajmuje O (N * logN), podczas gdy pojedynczą operacją maksimum jest O (N). – Tudor
@Wspaniaj, choć w całkowitej uczciwości, z małym N (i zakładam, że ma mały N b/c w przeciwnym razie utrzymanie całej gamy różnych pól będzie wymagało wiele pracy), nie będzie duża różnica. – stevevls
dodać je wszystkie do kolekcji, a następnie posortować je lub dodawać je do kolekcji, że zamówione w pierwszej kolejności, takich jak kolejka priorytetowa:
PriorityQueue<Date> dateQ = new PriorityQueue<Date>();
dateQ.add(someDate);
dateQ.add(anotherDate);
dateQ.add(thirdDate); // etc...
System.out.println("Max date is: " + dateQ.peek());
W jaki sposób efektywność tego rozwiązania porównuje się do wdrożenia z regularną kolekcją? – user6123723
Dobre pytanie. Powinno to być O (N log N), tak samo jak dodanie do listy, a następnie sortowanie. Jednak Collections.max (jak wspomniano w kilku innych odpowiedziach) jest O (N), więc jest zdecydowanie bardziej wydajny niż moja odpowiedź. – mongiesama
- 1. Jak uzyskać obraz daty utworzony w java
- 2. MySQL - Wybierz najnowszą datę z zestawu kilku możliwych znaczników czasu?
- 3. Jak uzyskać wartość zmiennych środowiskowych?
- 4. Jak uzyskać najnowszą (ostatnia modyfikacja) katalogu [C#]
- 5. Jak znaleźć maksymalną wartość zestawu zmiennych?
- 6. Jak uzyskać listę z zestawu i komparatora
- 7. uzyskać średnią z zestawu obiektów w django
- 8. Java 8 LocalDate - Jak uzyskać wszystkie daty między dwiema datami?
- 9. Java - Jak uzyskać aktualną datę niezależną od daty systemowej?
- 10. Filtrowanie elementów z zestawu w języku Java
- 11. Jak uzyskać najnowszą wersję SVN HEAD w git-svn?
- 12. Jak monitorować wartości zmiennych w programie Java?
- 13. Jak uzyskać wartość datepicker w formacie daty?
- 14. Jak uzyskać aliasing zmiennych w bibliotekach współdzielonych?
- 15. Jak wykonać iterację wartości wiersza z zestawu wyników w java?
- 16. Jak uzyskać konkretny atrybut z zestawu zapytań w widoku Django?
- 17. Jak uzyskać losowy element z zestawu w Swift?
- 18. Jak sformatować ciąg daty w języku Java?
- 19. Jak znaleźć najnowszą płytę w cakephp?
- 20. Lista wszystkich zdefiniowanych zmiennych MSBuild - odpowiednik zestawu
- 21. Jak uzyskać dziennik połączeń z określonej daty w Androidzie
- 22. Jak uzyskać dostęp do zmiennych laravel .env w javascript?
- 23. Jak znaleźć najnowszą partycję w tabeli HIVE
- 24. Array od daty Java
- 25. Przesuwanie zestawu bitów Java
- 26. Format daty JAVA
- 27. Używanie zmiennych zakresu zastosowania w java
- 28. Java: Wyliczenie z zestawu <String>
- 29. Zapytanie Java/MongoDB według daty
- 30. Nazwy zmiennych Java Unicode
Kilka razy lub tylko raz? – Tudor
tylko raz. wszystkie wartości zmiennych daty mogą być różne. Próbuję po prostu znaleźć najnowszą datę efektywnie do wyświetlania na stronie jsp. – user6123723
Czy najnowszy zawsze jest maksymalny lub czy trzeba uwzględniać przyszłe daty? – eabraham