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 :

Problème de tri de tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 15
    Points
    15
    Par défaut Problème de tri de tableau
    Je voudrais savoir comment puis-je trier mes tableau , je suis bloqué à cet endroit, merci bien pour votre aide !
    Voici mon code :

    stimulus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    public class Stimulus{
     
        public String mot;
        private String stringOfAnswers;
        public int numberOfAnswers = 0;
     
     
     
        Stimulus(String s1, String s2){
        mot = s1;
        stringOfAnswers = s2; 
        }
     
        public void calculnOA(){ 
        int compteurDeBarres = 0;
        for (int i = 0; i < stringOfAnswers.length(); i++){
            if (stringOfAnswers.charAt(i) == '|'){
                compteurDeBarres++;
            }
            }
        numberOfAnswers = compteurDeBarres / 2;
        }
     
     
        public void buildArray(){
        boolean readingFreq = false;//indique si nous sommes en train de lire la frequence d'une reponse
        int indexOfArray = 0; 
        int convertMultiplier = 1;//multiplicateur pour la conversion de char en int
            for(int i = 0; i < stringOfAnswers.length(); i++){
            if (!readingFreq){
            if (stringOfAnswers.charAt(i) != '|'){
            (answers[indexOfArray]).mot = mot + stringOfAnswers.charAt(i);
            }
            else{
                readingFreq = true;
                indexOfArray++;
            }
            }
            else {
     
            if (stringOfAnswers.charAt(i) != '|'){
                (answers[indexOfArray]).frequence +=  ( (int)(stringOfAnswers.charAt(i)) - (int)'0') * convertMultiplier;
                convertMultiplier *= 10;
            }
            else {
                convertMultiplier = 1;
                readingFreq = false;
            }
            }
        }//fin du for
        }//fin de la methode
     
        public Answer [] answers = new Answer [numberOfAnswers];
     
     
        public int frequence(){
        int a = 0;
        for(int i = 0; i < answers.length ; i++) a += (answers[i]).frequence ;
        return a;
        }
     
        public void answerMe(int seuil){
        for (int i = 0; i < answers.length; i++){
            if ((answers[i]).frequence > seuil){
            System.out.print((answers[i]).mot + "|" + (answers[i].frequence) + "|");
            }
        }
        System.out.println(" ");
        }
     
        public boolean isStimulusOf(String s){
        for (int i = 0; i < answers.length; i++){
            if ( s.equals( (answers[i]).mot)) return true;
        }
        return false;
     
        }
     
     
        public int frequencyOf(String s){
        for (int i = 0; i < answers.length; i++){
            if ( s.equals((answers[i]).mot)) return (answers[i]).frequence; // inutile d'appeler isStimulusOf
        }
            return 0 ;
     
        }
    }
    answer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Answer{
     
        public String mot = null;
        public int frequence = 0;
     
     
     
    }

  2. #2
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonsoir,

    Reste à implémenter la comparaison mais voilà comment s'y prendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Arrays.sort(answers,new Comparator<Answer>() {
      public int compare(Answer o1, Answer o2) {
        // TODO: implémentation de la comparaison des Answer
      }
    });

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Je voudrais trier par ordre décroissant de fréquence !

  4. #4
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Si tu as déjà un comparateur, il te suffit d'inverser les deux paramètres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    final Comparator<Answer> frequencyComparator = ...;
    Comparator<Answer> InversedFrequencedComparator = new Comparator<Answer>()
    {
      public int compare(Answer a1, Answer a2)
      {
         return frequencyComparator.compare(a2, a1);
      }
    }
    sinon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Comparator<Answer> InversedFrequencedComparator = new Comparator<Answer>()
    {
      public int compare(Answer a1, Answer a2)
      {
         return a2.frequence - a1.frequence;
      }
    }
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Merci bien !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/11/2011, 16h12
  2. Problème de tri de tableau.
    Par Mlezen dans le forum MATLAB
    Réponses: 2
    Dernier message: 30/11/2009, 18h09
  3. [Tableaux] Problème de tri de tableau à 2 dimensions
    Par lebigboss dans le forum Langage
    Réponses: 1
    Dernier message: 09/05/2007, 16h34
  4. Réponses: 3
    Dernier message: 21/09/2006, 15h55
  5. Réponses: 9
    Dernier message: 11/08/2006, 21h58

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