Ranger un tableau de date par ordre croissant [Résolu]

Signaler
-
Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
-
Bonjour,

J'ai un tableau de date au format dd-mm-yyyy et, j'aimerai ranger ce tableau par ordre croissant de date svp en java.


Merci de m'aider

1 réponse

Messages postés
16358
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
7 juin 2021
122
Bonjour,

Tu peux utiliser la méthode Arrays.sort pour un tableau, ou Collections.sort pour une liste, il faudra juste leur préciser un Comparator qui permettra de comparer deux valeurs.

Exemple :

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class DateComparator implements Comparator<String>
{
    private final SimpleDateFormat format;
    private final boolean ascending;
    
    public DateComparator(String pattern)
    {
        this(pattern, true);
    }
    
    public DateComparator(String pattern, boolean ascending)
    {
        this.format = new SimpleDateFormat(pattern);
        this.ascending = ascending;
    }
    
    @Override
    public int compare(String str1, String str2)
    {
        try
        {
            int n = format.parse(str1).compareTo(format.parse(str2));
            return ascending ? +n : -n;
        }
        catch (ParseException | NullPointerException e)
        {
            throw new IllegalArgumentException(e);
        }
    }
    
    public static void main(String[] args)
    {
        String[] array = {"01-01-2014", "30-06-2013", "01-01-2013", "30-06-2014"};
        Arrays.sort(array, new DateComparator("dd-MM-yyyy"));
        System.out.println(Arrays.toString(array));
        
        List<String> list = Arrays.asList("01-01-2014", "30-06-2013", "01-01-2013", "30-06-2014");
        Collections.sort(list, new DateComparator("dd-MM-yyyy"));
        System.out.println(list);
    }
}