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

Langage Java Discussion :

Tri d'une Chaine de Caractère selon un Critère


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut Tri d'une Chaine de Caractère selon un Critère
    Bonjour,

    Je cherche a effectuer un tri sur un Tableau contenant des chaines de caractères, selon un critère, de la façon la plus optime possible,

    Exemple:
    --------

    Entrer:
    Tab[0]="*****20070501_1030*****"
    Tab[1]="*****20070301_1030*****"
    Tab[2]="*****20070101_1030*****"
    Tab[3]="*****20070201_1030*****"
    Tab[4]="*****20070401_1030*****"

    Sortie:
    Tab[0]="*****20070101_1030*****"
    Tab[1]="*****20070201_1030*****"
    Tab[2]="*****20070301_1030*****"
    Tab[3]="*****20070401_1030*****"
    Tab[4]="*****20070501_1030*****"

    La chaine au milieu représente la date, elle se trouve a chaque fois au même endroit du début de la phrase,

    Merci d'Avance,

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Un simple tri lexicographique avec la relation d'ordre naturelle sur les chaînes de caractères me paraît optimisé...

    Ce sera certainement plus rapide que de découper ta chaîne avec un subString pour ne comparer que les sous-chaînes qui t'intéressent (ce qui impliquerait d'ailleurs une création de nouveaux objets de type String, donc de l'espace mémoire supplémentaire).

    Je te conseille donc un simple "compareTo()" sur tes chaînes.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    Merci de ta réponse,

    Comme étant "Niveau Intermédiaire" en Programmation JAVA, je ferai des petites recherches sur l'utilisation de cette méthode, question de souvenir un peu du Passer

    J'espère que j'ai bien exposé mon besoin et que cette méthode fera la faire,

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    Bonjour,

    C'est cette méthode que je doit utiliser, mais j'ai pas réussir a détecté le comparateur,

    sort(List<T> list, Comparator<? super T> comparator);

    Un petit aide SVP ?

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<String> chaines = new ArrayList<String>();
    ...
    Collections.sort(chaines);
    Ca me semble pas plus compliqué que cela... String étant un Comparable, pas besoin de fournir de comparateur.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 73
    Par défaut
    Merci Pour Vos Réponse, je pense que j'ai réussi à résoudre mon problème en se basons sur les méthodes suivants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class SubStrComp implements Comparator {
     public int compare(Object o1, Object o2) throws ClassCastException {
       String s1 = (String) o1 ;
       String s2 = (String) o2 ;
     
       return (s1.substring(start, end)).compareTo(s2.substring(start, end));
     }
    }
    Collections.sort(list, new SubStrComp());
    "Start" et "end" étant les indices, de la sous chaine que je voulais se baser sur elle pour trier mes chaines de caractères,

    Merci Pour la Méthode Men,

    Je vois que contrairement a votre suggestion j'ai passé comme même par SubString, je vois pas comment peut on faire sans ? Merci de m'indiquer s'il y a une optimisation a ce script,

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 22/10/2012, 21h53
  2. Comment récupérer une chaine de caractère selon son début et sa fin?
    Par neo62matrix dans le forum Général Python
    Réponses: 3
    Dernier message: 21/03/2012, 10h08
  3. Tri d'une chaine de caractères
    Par schuller dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2009, 16h21
  4. Réponses: 8
    Dernier message: 24/07/2007, 13h39
  5. Diviser un fichier selon une chaine de caractères
    Par navis84 dans le forum Langage
    Réponses: 4
    Dernier message: 19/06/2006, 11h51

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