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 :

Tri d'un tableau en alphanumérique et non l'inverse


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 16
    Par défaut Tri d'un tableau en alphanumérique et non l'inverse
    Bonjour,

    J'ai un léger petit problème avec des tableaux en Java, particulièrement au niveau des tries.

    Je voudrais trier mon tableau par lettre puis chiffre et non en chiffre puis lettre.

    Cependant si j'utilise un Arrays.sort(tableauString), les chaines de caractère sont toujours triées d'abord par chiffre puis par lettre ...

    Sous certaine base de donnée, il existe des paramétres afin d'inverser ces fonctionnalités (NLS_SORT), est ce qu'il y a un moyen de changer ce trie ?

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        	String toto[] = new String [9];
     
        	toto[0]="1PT5";
        	toto[1]="PAT5";
        	toto[2]="P8T5";
        	toto[3]="P6T5";
        	toto[4]="APT5";
        	toto[5]="QPT5";
        	toto[6]="WPT5";
        	toto[7]="ZPT5";
        	toto[8]="2PT5";
     
        	Arrays.sort(toto);
    Donne :
    Liste Triée :
    1PT5
    2PT5
    APT5
    P6T5
    P8T5
    PAT5
    QPT5
    WPT5
    ZPT5

    et moi je voudrais :
    Liste Triée :
    APT5
    PAT5
    P6T5
    P8T5
    QPT5
    WPT5
    ZPT5
    1PT5
    2PT5

    Merci d'avance.

    Michael

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    La classe Arrays possède une méthode sort() à laquelle tu peux passer un Comparator .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    A noter également que tu peux utiliser les Collator pour respecter les ordres de trie selon la Locale, par exemple pour trier selon les règles françaises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrays.sort(toto, Collator.getInstance(Locale.FRANCE));
    Mais ces règles laissent quand même les chiffres au début.


    Par contre tu peux utilsier les RuleBasedCollator pour modifier cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        	Collator collator = Collator.getInstance(Locale.FRANCE);
        	if (collator instanceof RuleBasedCollator) {
        		collator = new RuleBasedCollator(
        				((RuleBasedCollator)collator).getRules()
        				+ "<0<1<2<3<4<5<6<7<8<9" // on ajoute les chiffres à la fin
        		);
        	}
        	Arrays.sort(toto, collator);
    a++

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 16
    Par défaut
    Bonjour,

    Je viens d'essayer avec les Collator et les RuleBasedCollator, ca fonctionne très bien.

    Merci de votre aide préciseuse.

    Michael

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

Discussions similaires

  1. Tri d'un tableau en 2D
    Par sniperseb dans le forum C
    Réponses: 4
    Dernier message: 05/01/2006, 16h33
  2. Réponses: 6
    Dernier message: 16/09/2005, 10h30
  3. tri d'un tableau à 2 dimensions
    Par dede92 dans le forum C
    Réponses: 4
    Dernier message: 19/02/2005, 18h29
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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