Ranger un tableau de date par ordre croissant

Résolu
tchambagerard - 11 juin 2014 à 19:35
KX
Messages postés
16568
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
5 juillet 2022
- 14 juin 2014 à 00:20
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
A voir également:

1 réponse

KX
Messages postés
16568
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
5 juillet 2022
124
14 juin 2014 à 00:20
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);
    }
}
1