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

tchambagerard - 11 juin 2014 à 19:35 - Dernière réponse : KX 15363 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention
- 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
Afficher la suite 

1 réponse

Répondre au sujet
KX 15363 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 20 avril 2018 Dernière intervention - 14 juin 2014 à 00:20
+1
Utile
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);
    }
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de KX

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.