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 :

Réérire le tri naturel d'un TreeSet


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut Réérire le tri naturel d'un TreeSet
    J'ai des chaînes de caractère dans un TreeSet qui sont automatiquement triés naturellement et par ordre alphabétique, tel qu'un TreeSet se définit. Mais j'ai des majuscules dans mes chaines et je ne souhaite pas que la case soit respectée dans la mesure où l'implémentation de l'interface Comparable par la classe String ne respecte pas la case.
    1) Je ne peux donc pas réécrire la méthode compare(), puisqu'il s'agit d'un tri naturel des String
    2) Je ne peux non plus réécrire la méthode compareTo() puisque je ne pourrait même pas appliqué une méthode sort() sur un TreeSet.

    Quelqu'un a -t-il une idée.

    ILLUSTRATION

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class AffichageTrier {
         public static void main (String[] args) {
                Set noms = new TreeSet();
                noms.add("a"); noms.add("e"); noms.add("b"); noms.add("w");
                noms.add("P"); noms.add("K");
                System.out.print(noms + " ");
         }
    }
    Le résultat produit par le code suivant est le [K, P, a, b, e, w] à cause de K et P qui sont en majuscule. Pourtant le résultant escompté est [a, b, e, K, P, w]

    Quelqu'un a-t-il une idée.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Utilisez le constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TreeSet(Comparator<String> comparator)
    et fournissez votre propre Comparator qui utilise vos propres critères

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut
    Merci beaucoup tchize_ , ça marche !

    Bonne journée.

  4. #4
    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 l'existence de la classe Collator qui permet d'utiliser des comparaisons de chaines spécifiques à une Locale...

    Cela permet par exemple de gérer proprement l'ordre des accents en français.

    a++

Discussions similaires

  1. Tri de tableau (ordre naturel)
    Par mazamazine dans le forum Langage
    Réponses: 10
    Dernier message: 09/08/2012, 05h48
  2. [PHP 5.2] [Tableaux] Tri naturel des valeurs d'un tableau
    Par Riko63 dans le forum Langage
    Réponses: 3
    Dernier message: 03/07/2009, 08h14
  3. [Tableaux] Tri naturel avec natcasesort()
    Par x86master dans le forum Langage
    Réponses: 20
    Dernier message: 03/06/2008, 16h19
  4. [2K5] Tri par ordre naturel
    Par mioux dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 04/03/2008, 11h56
  5. Réponses: 2
    Dernier message: 04/11/2007, 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