Odinare ArrayList per data

Mariangela Di Luccia

Nuovo Utente
26 Dic 2015
1
1
0
Buona Sera...
Dovrei ordinare un ArrayList di oggetti Partita per data in ordine cronologico ma non risco a trovare un metodo per visualizzare tutte le partite in un nuovo ArrayList come posso fare..Grazie in anticipo
 
  • Like
Reactions: ottofonsuppost

ottofonsuppost

Utente Attivo
10 Mag 2016
170
13
18
Per manipolare le date, in passato si usava la classe DATE, che creava notevoli problemi e che per motivi di compatibilità con i vecchi programmi, esiste ancora nella classe JAVA.UTIL.
Ora, nel pacchetto JAVA.UTIL abbiamo la classe CALENDAR, che è una classe astratta, e che è stata estesa con una sottoclasse chiamata GregorianCalendar, utile a rappresentare il calendario standard utilizzato nella maggior parte del mondo.
Scrivendo ad inizio del programma la frase
import java.util.*;

importiamo tutti i metodi e le classi di quel pacchetto; ma se vogliamo possiamo importare solo le classi che ci servono, scrivendo
import java.util.Calendar;
import java.util.GregorianCalendar;

La cosa curiosa della classe GregorianCalendar è che i mesi partono da ZERO e arrivano a 11; Gennaio è il mese ZERO. Per maggiore chiarezza esistono delle costanti, ma sono i nomi dei mesi in inglese; quindi per chi non conosce l’inglese, occorre creare delle istruzioni che convertono i numeri del mese in quelle costanti. Mese 4 = APRIL, MESE 12 = DECEMBER.
Codice:
import java.util.*;  public class OrdinareArrayPerData { public static void main(String[] args) {
  
                  //PRIMA PARTE - stampa la data del 25/12/2011
           
        GregorianCalendar data1 = new GregorianCalendar(2011,Calendar.DECEMBER,25);
      
    int giorno = data1.get(GregorianCalendar.DAY_OF_MONTH);
    int mese = data1.get(GregorianCalendar.MONTH)+1;
    int anno = data1.get(GregorianCalendar.YEAR);
         System.out.println("Data scelta "+giorno+"/"+(mese)+"/"+(anno));           }  }
Poi vedremo gli ARRAY di DATE, per il momento, baci e abbracci, OTTOFONSUPPOST.
 
Ultima modifica:

ottofonsuppost

Utente Attivo
10 Mag 2016
170
13
18
Molti in presenza delle date si affidano agli ARRAY e creano delle stringhe tipo "25/12/2016"; ma poi occorre prima confrontare l'anno, poi il mese, poi il giorno.
Conviene, invece, faticare di meno e confrontare gli oggetti data utilizzando il metodo BEFORE.
Aggiungete al listato precedente, e prima della parentesi graffa finale, queste altre righe di codice, e date il RUN.
In queste ulteriori righe vediamo il BEFORE in azione.
Codice:
//confrontare due date 25/8/2016 e 14/8/2016

GregorianCalendar primaData = new GregorianCalendar(2016,7,25);
GregorianCalendar secondaData = new GregorianCalendar(2016,7,14);

if (primaData.before(secondaData)){
    System.out.println("pD 25 sD 14; primaData viene prima ");}
else{System.out.println("pd 25 sD 14 ; primaData viene dopo ");}
 
Ultima modifica:

ottofonsuppost

Utente Attivo
10 Mag 2016
170
13
18
Esiste un altro metodo curioso per confrontare due date: farsi dare dalla classe GregorianCalendar i MILLISECONDI della data. Ogni volta che inseriamo una data, se ce la facciamo stampare, ci accorgeremo che ci viene fornita una risposta lunghissima, che contiene tanti dati che noi non abbiamo richiesto; uno si aspetta di vedere il 25/12/2016 ed invece ci arriva una pappardella che disorienta tutti.
La cosa curiosa delle date trasformate in MILLISECONDI, è che riflettendoci, non tutti i giorni sono composti da 24 ore. Vi chiederete che razza di stupidaggine ho detto.
Esiste l'ora solare e l'ora legale; quindi ogni anno vi sono due giorni particolari che accorciano e allungano la giornata espressa in millisecondi. Quindi attenzione a trasformare i millisecondi in data.
Va da sè che più i giorni passano e più avremo millisecondi. Perciò ci basta fare la differenza tra i millisecondi forniti dalle date, per sapere quale data viene prima.
Prima della parentesi graffa finale; aggiungete queste ulteriori righe di codice ai precedenti.
Le pagine di internet sono piene di gente che diventa matta per capire come operare sulle date; ma leggendo questa risposta del grande OTTOFONSUPPOST vi siete risparmiati la perdita di tempo a capire come funzionano le date in JAVA. Potete ringraziarmi dandomi un semplice MI PIACE. Dare un mi piace non ci costa nulla; fa felice il prossimo, e migliora il Mondo.
Baci e abbracci, OTTOFONSUPPOST.
Codice:
//confrontare due date 25/8/2016 e 14/8/2016
//USANDO le date in MILLISECONDI MS

long MSprimaData = primaData.getTimeInMillis();
long MSsecondaData = secondaData.getTimeInMillis();

System.out.println("pD 25/8/2016 in millis "+MSprimaData);
System.out.println("sD 14/8/2016 in millis "+MSsecondaData);
 
Ultima modifica:

ottofonsuppost

Utente Attivo
10 Mag 2016
170
13
18
OTTOFONSUPPOST RISOLVE IL PROBLEMA ORDINARE ARRAY LIST PER DATA

Una volta capito il funzionamento delle date usando GregorianCalendar, rimane la parte più facile del programma. Eccovi le foto dei risultati: la stampa degli ARRAYLIST V, e Z, ed infine ARRAYLIST z in ordine di data.
Baci e abbracci ordinati, OTTOFONSUPPOST.

Eccovi le date ordinate 11 - 14 - 25 - 28
ARRAYLISTORDINATO.png


Ed ecco il codice usato per risolvere il problema
Codice:
package javaapplication18;                         import java.util.*;
public class JavaApplication18 {     public static void main(String[] args) {
   
                  // ABBIAMO 4 DATE DI CALENDARIO  
GregorianCalendar primaData = new GregorianCalendar(2016,7,25);
GregorianCalendar secondaData = new GregorianCalendar(2016,7,14);
GregorianCalendar terzaData = new GregorianCalendar(2016,7,28);
GregorianCalendar quartaData = new GregorianCalendar(2016,7,11);  
   
                  //CREIAMO ARRAYLIST V VUOTO E LO RIEMPIAMO DI 4 DATE   
    ArrayList v = new ArrayList ();      System.out.println("n.elementi di v: "+v.size());
v.add(primaData); v.add(secondaData); v.add(terzaData); v.add(quartaData);

System.out.println("n. elementi di v: "+v.size());
for (int i=0; i<v.size(); i++){   System.out.println("elementov "+ i+": "+v.get(i));}
System.out.println(" ");

                    //creo ARRAYLIST Z E FACCIO LA COPIA DI V
  ArrayList z = new ArrayList ();
   boolean addAll = z.addAll(v);             System.out.println("n. elementi di z: "+z.size());
    for (int x=0; x<z.size(); x++){        System.out.println("elementoz "+ x+": "+z.get(x));}

                              // ordino l'ARRAYLIST Z
    Collections.sort(z);                          System.out.println("n. elementi di z: "+z.size());
    for (int x=0; x<z.size(); x++){       System.out.println("elementoz "+ x+": "+z.get(x));} } }
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
P Problema ArrayList<Pacco>... Java 0
A Esercizio ArrayList Java 1
antonio.amazza Creazione ArrayList Java 2
E ArrayList da pagina HTML a JavaScript Javascript 1
felino Lubuntu 18.04 Requisiti per applicazione console .net core 7.0 Linux e Software 0
M pulsante per aprire una maschera che contiene controllo schede MS Access 0
E Aiuto per query PHP 8
E Il punto di riferimento italiano per Trailers cavalli Discussioni Varie 0
F CERCO Servizi SEO di Qualità per Agenzie di Servizi SEO e Posizionamento 3
D Miglior modo per estrarre le occorrenze di un elemento in un set di più file xml e quindi scrivere il risultato in una tabella Excel o magari in JSON XML 0
A Cerco programmatore/sviluppatore per creare forum Offerte e Richieste di Lavoro e/o Collaborazione 2
R Plugin di base per WordPress WordPress 0
D [COMPRO/CERCO] GUEST POST o scambio link per sito di Spiritualità ed Esoterismo. Vendere e Acquistare pubblicita' online 0
L Suggerimento Pagespeed per non vedenti HTML e CSS 0
M Analisi sito per pulire codice inutile HTML e CSS 1
Paolo69 Risolto reCAPTCHA v2 per ASP Classic ASP 0
M Hosting VPS per server di gioco Minecraft Hosting 0
N Grazie per il benvenuto Presentati al Forum 0
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
R Filtri e plugin per photoshop Photoshop 0
AkTaRuS DIsabilitare il tasto destro tranne che per code e pre Javascript 1
0 [Retribuito] Cercasi programmatore per GdR PbC Offerte e Richieste di Lavoro e/o Collaborazione 0
A Adempimenti per magazine on line Leggi, Normative e Fisco 0
R Recupero di permalink di un sito che è stato eliminato per errore WordPress 5
I aiuto urgente per thunderbird Posta Elettronica 0
A Web master per semplice sito web Offerte e Richieste di Lavoro e/o Collaborazione 2
M [Cerco][Gratuito] Artista/designer per creazione grafica gioco di società Offerte e Richieste di Lavoro e/o Collaborazione 0
M Un saluto per cominciare Presentati al Forum 1
N MAX() + ADD_DATE - per update su Mysql MySQL 0
G Qualcuno conosce questo software per gestire le telecamere IP Cam e Videosorveglianza 0
A [CERCO] Articolista per siti a tema eventi e feste private Offerte e Richieste di Lavoro e/o Collaborazione 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
I aiuto per outlook Posta Elettronica 0
L Script per convertire numeri in parole Javascript 2
J [Cerco] [Collaborazione gratuita] Grafico per piccoli lavori di grafica Offerte e Richieste di Lavoro e/o Collaborazione 0
M Memorizzazione temi per le diverse pagine del sito Javascript 1
otto9due Proteggere file caricati dall'esterno ma renderli accessibili per gli utenti loggati. PHP 4
E Consigli per hosting reseller Hosting 0
T aiuto per trasformare un quiz fatto in JS in un quiz in JQUERY jQuery 0
F Cerco fotografo per sito abiti da sposa Discussioni Varie 2
R [cerco][retribuito] Collaborazione per creazioni loghi ed altro Offerte e Richieste di Lavoro e/o Collaborazione 0
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
seranto Blocco preventivo e Registro dei Consensi per Cookie tecnici? Leggi, Normative e Fisco 2
D Come estendere la tariffa per Wordpress con Visa? Hosting 1
M Fullcalendar in Codeigniter, un aiuto per la chiamata $ajax ? jQuery 0
N Consigli SEO per il mio sito di web design SEO e Posizionamento 0
P Proiezione di Gauss per grafica su sfera in PVC Photoshop 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
MarcoGrazia Categorie per settore merceologico di Google SEO e Posizionamento 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0

Discussioni simili