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

tchambagerard - 11 juin 2014 à 19:35 - Dernière réponse : KX 15785 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 21 octobre 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 

Votre réponse

1 réponse

Meilleure réponse
KX 15785 Messages postés samedi 31 mai 2008Date d'inscriptionModérateurStatut 21 octobre 2018 Dernière intervention - 14 juin 2014 à 00:20
1
Merci
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);
    }
}

Merci KX 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

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.