PDA

View Full Version : [JAVA] prendere la data più recente da una lista


anonimizzato
07-08-2010, 19:03
Ciao a tutti,

volevo chiedervi quale fosse il modo migliore per comparare una serie di oggetti "Date" in Java recuperando, ad esempio, quello che rappresenta la data più recente appena trascorsa.

Ora non ho sottomano il codice ma siccome dovevo prendere la data più recente fra 3 ho semplicemente:

- comparato le prime due date e preso la maggiore
- comparato quest'ultima con la terza data e preso la maggiore.

dal secondo confronto ottengo il risultato che desidero.

La comparazione la faccio con

data1.after(data2)

Ovviamente và bene se si hanno solo due date ma non se ve ne sono N.

Come è possibile ordinare quindi, ad esempio, un ArrayList di oggetti Date?

Tnx.

oNaSsIs
07-08-2010, 19:22
Le alternative sono appunto due:

Ordinamento dell'ArrayList con estrazione del massimo
Ricerca del massimo

La ricerca del massimo in un array è molto semplice ed ha complessità lineare, fai una scansione del vettore e utilizzi una variabile d'appoggio che contiene il massimo trovato fino a quel momento...

anonimizzato
08-08-2010, 10:37
Ho usato il primo metodo che mi hai consigliato.

Ho inoltre scoperto che la classe Date implementa già i metodi dell'interfaccia "Comparable" quindi basta fare:

Collections.sort(list);

Per avere un array di date ordinate in senso cronologico.

Tnx again.

WarDuck
08-08-2010, 14:15
Se ho capito bene cosa devi fare, si potrebbe usare una coda con priorità dove in questo caso la tua chiave è la data...

A quel punto la coda gestisce in automatico questa cosa, tenendo ordinate le date ad ogni inserimento.

Dai un'occhiata a PriorityQueue:

http://download.oracle.com/javase/6/docs/api/java/util/PriorityQueue.html

anonimizzato
08-08-2010, 14:20
Interessante, grazie della segnalazione. ;)