IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Trier par ordre alphabétique un tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 73
    Points
    73
    Par défaut Trier par ordre alphabétique un tableau
    J'ai un tableau contenant des noms de fichiers que j'ai récupérés avec la fonction suivante (actualDirectory est le répertoire dans lequel se trouve les fichier à récupérer):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File[] listFiles = actualDirectory.listFiles();
    Mais les noms des fichiers dans ce tableau sont rangés de facon assez étrange, il n'y a pas d'ordre !!!
    Donc serait il possible de les trier par ordre alphabétique ???

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    Salut,

    Regarde la méthode sort() de Arrays. Tu devra créer un Comparator (très simple) et le tour sera joué.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 73
    Points
    73
    Par défaut
    t'aurais pas un exemple par hasard ???

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    Voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Comparator comp = new Comparator() {
          public int compare(Object o1, Object o2) {
            File f1 = (File) o1;
            File f2 = (File) o2;
            return f1.getName().compareTo(f2);
          }
        };
     
        Arrays.sort(listFiles, comp);
    Je n'ai pas testé ce code mais ça devrait fonctionner.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 73
    Points
    73
    Par défaut
    désolé, mais ça ne marche pas. L'ordre est changé, mais ce n'est pas alphabétique

    petite modif sur le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return f1.getName().compareTo(f2.getName());
    pourtant la méthode est bonne ...

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Points : 342
    Points
    342
    Par défaut
    Arf, bien vu pour la petite faute que j'ai fait

    Par contre ça devrait être dans l'ordre alphabétique

    Chez moi ça tri bien, donnes le code que tu as fais, stp.

    EDIT : Par contre la ça fait un tri sensible à la casse, si tu ne veut pas qu'il soit sensible à la casse il faut utiliser compareToIgnoreCase() à la place de compareTo.

    EDIT 2 : bon la je dois partir (c'est le week end ), je regarderais plus tard si tu n'as pas trouvé entre temps.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 73
    Points
    73
    Par défaut
    Okay, ca marche mieux avec la commande compareToIgnoreCase :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            Comparator comp = new Comparator() {
                public int compare(Object o1, Object o2) {
                    File f1 = (File) o1;
                    File f2 = (File) o2;
                    return f1.getName().compareToIgnoreCase(f2.getName());
                }
            };
            Arrays.sort(listFiles, comp);
    Bravo

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Deux informations complémentaires :



    Ce qui pourrait donner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	Arrays.sort(files, new Comparator<File>() {
    		private final Collator collator = Collator.getInstance(Locale.FRANCE);
    		public int compare(File f1, File f2) {
    			return collator.compare(f1.getName(), f2.getName());
    		}
    	});
    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 28/06/2010, 11h16
  2. Fonction pour trier par ordre alphabétique
    Par brunobzh dans le forum C++
    Réponses: 6
    Dernier message: 18/04/2008, 10h51
  3. trier par ordre alphabetique un tableau de char
    Par Pitou5464 dans le forum C
    Réponses: 3
    Dernier message: 02/11/2006, 18h44
  4. Réponses: 1
    Dernier message: 27/05/2006, 23h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo