Trier des noms de fichiers

Signaler
Messages postés
1
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
22 septembre 2006
-
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
-
J'essaie de trier une liste de fichiers par leur noms

Soit la classe :
public class Fichier implements Comparable {
   String nom;
   ....
   public int compareTo(Object object) {
      Fichier f = (Fichier) object;
      return nom.compareToIgnoreCase(f.nom);
   }
}

Le problème est que par exemple un fois trié, "s100.txt" a un index inférieur à "s99.txt" alors que pour des fichiers il faut afficher "s99.txt" avant "s100.txt"...
Le tri lexicographique ne fonctionne donc pas... comment m'en sortir ?

Merci

3 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
C'est à toi de faire ton propre algorithme de tri !

Je pense qu'il doit en existe sur le net.
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut :

Est ce que tes fichiers portent les noms : s0.txt, s1.txt, ...., s99.txt ?
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Dans le cas où tes fichiers s'appellent tous s[Nombre].txt, tu pourrais faire comme ceci :

public int compareTo(Object object) {
      Fichier f = (Fichier) object;
      int value1 = Integer.ParseInt(nom.substring(1,nom.length-5));
      int value2 = Integer.ParseInt(f.nom.substring(1,nom.length-5));
      return (value1.CompareTo(value2));
   }

Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.