Tengo alrededor de 8 variables de fecha (java.util.Date) con diferentes nombres de variable. ¿Cuál es la forma más eficiente/mejor de elegir la fecha más reciente (máxima) de estas fechas?Cómo obtener el más reciente de un conjunto de variables de fecha en java
Respuesta
Lo ideal es almacenarlos en una colección - esto podría tener sentido en términos de su diseño de los programas de todos modos. Si tiene, por ejemplo, un objeto de lista, que puede hacer:
Collections.max(dates);
Date
es comparable, por lo que añadir a todos ellos a una lista, y el uso Collections.max()
para encontrar el mayor (más reciente) Fecha:
List<Date> dates = new ArrayList<Date>();
dates.add(foo);
dates.add(bar);
... etc
Date latest = Collections.max(list);
En realidad, si usted quiere conseguir la suposición, usted puede hacer esto:
public static <T extends Comparable<T>> T max(T... items) {
return Collections.max(Arrays.asList(items));
}
y lo llaman así:
Date latest = MyClass.max(foo, bar, fred);
pero será También funciona para cualquier Comparable
:
Integer biggest = MyClass.max(3, 7, 4, 1);
Esto es O (N log N), mientras que Collections.max es O (N). – Richante
ponerlos en una lista y utilizar Collections.max
.
Puesto que usted está almacenando todas sus fechas en diferentes variables, tiene que hacer algo como lo siguiente función varargs y pasar todas las variables fuera de ella:
protected Date getMostRecentDate(Date ... dates) {
Arrays.sort(dates);
return myDateArray[dates.length - 1];
}
Luego que se dice que como tal :
Date mostRecent = getMostRecentDate(date1, date2, date3 /* etc.*/);
Esto no es eficiente ya que solo quiere obtener el máximo una vez. La ordenación toma O (N * logN) mientras que una sola operación máxima es O (N). – Tudor
@Tudor seguro, aunque con toda justicia, con N pequeña (y estoy suponiendo que tiene un pequeño N b/c que de lo contrario mantendrá un montón de campos diferentes va a ser mucho trabajo), no va a haber mucha diferencia – stevevls
añadir a todos ellos a una colección y luego clasificarla, o añadirlos a una colección que se ordenó en el primer lugar, como 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());
¿Cómo se compara la eficiencia de esto con una implementación con una colección regular? – user6123723
Buena pregunta. Esto debería ser O (N log N), lo mismo que agregarlo a una lista y luego ordenarlo. Sin embargo, Collections.max (como se hace referencia en varias otras respuestas) es O (N), por lo que definitivamente es más eficiente que mi respuesta. – mongiesama
- 1. Obtener la fecha más reciente de una serie de fechas
- 2. SQL Cómo seleccionar el artículo de la fecha más reciente
- 3. MySQL: seleccione la fecha más reciente de un conjunto de varias marcas de tiempo posibles?
- 4. Cómo obtener programáticamente la fecha de compromiso más reciente en un pago de CVS
- 5. Obtener la fecha más reciente en registros XML
- 6. Expresión lambda para la fecha más reciente
- 7. Oracle selecciona el registro de fecha más reciente
- 8. MySQL: obtener el registro más reciente
- 9. ¿Cómo seleccionar el más reciente conjunto de registros que datan de una tabla de MySQL
- 10. Obtenga el directorio más reciente en bash a las variables
- 11. SQL seleccionando filas por fecha más reciente
- 12. php mysql ordenar por fecha (el más reciente)
- 13. Cómo obtener el archivo más reciente utilizando un script por lotes en Windows
- 14. Cómo obtener el directorio más reciente (última modificación) [C#]
- 15. LINQ to SQL: GroupBy() y Max() para obtener el objeto con la fecha más reciente
- 16. Obtenga la fecha del viernes más reciente SQL
- 17. Obteniendo el mensaje más reciente en un hilo
- 18. Cómo encontrar la fecha más alta (más reciente) y la más baja (anterior) [R]
- 19. Seleccionar la fecha más reciente entre dos columnas
- 20. Buscar la carpeta más reciente en un directorio en Python
- 21. Obtenga la fecha más reciente y más antigua de una lista: Ruby
- 22. SQL: seleccione la fecha más reciente para cada categoría
- 23. Mysql ordena elementos por la más reciente de 2 fechas
- 24. Rails 3. Obtenga la actualización más reciente
- 25. selección registro más reciente
- 26. SELECT 5 más reciente de SQL Server
- 27. ¿Cómo puedo obtener solo la primera fila en un conjunto de resultados DESPUÉS de ordenar?
- 28. SQL - Seleccione el registro más reciente cuando hay un duplicado
- 29. ¿La forma más rápida de obtener el primer objeto de un conjunto de consulta en django?
- 30. Java "variable de tipo reciente"
¿Varias veces o solo una vez? – Tudor
solo una vez. todos los valores de las variables de fecha pueden ser diferentes. Solo estoy tratando de encontrar la fecha más reciente de manera eficiente para mostrar en una página jsp. – user6123723
¿El más reciente es siempre el máximo o necesita contabilizar las fechas futuras? – eabraham