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 :

Listes,boucles à trier


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Listes,boucles à trier
    Bonjour
    Ca fait déjà un moment que je suis sur cet bête méthode mais pas moyen je cale complètement.

    Je voudrais incrémenter deux compteur, en fonction du nombre d'éléments semblable.
    Puis prendre l'élément le plus fréquents (ou les plus fréquents si ils tombent sur un ex aequo)
    Mes listes sont déjà trier alphabétiquement.
    L'une est sans les doublons pour la comparaison.

    Entre les erreurs de compilation et les résultat non souhaiter je désespère.

    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
    public class StatisticsTest {
     
        public static void main(String[] args) {
     
        		HashSet<String> Set = new HashSet<String>();
        	    ArrayList<String> color = new ArrayList<String>();
        	    ArrayList<String> listSet = new ArrayList<String>();
        	    ArrayList<String> top = new ArrayList<String>();
     
     
                color.add("Rouge"); //5Rouge
                color.add("Rouge");//6Bleu
                color.add("Rouge");//3Vert
                color.add("Vert");//2Jaune
                color.add("Bleu");
                color.add("Bleu");
                color.add("Bleu");
                color.add("Bleu");
                color.add("Jaune");
                color.add("Vert");
                color.add("Vert");
                color.add("Rouge");
                color.add("Rouge");
                color.add("Jaune");
                color.add("Bleu");
                color.add("Bleu");
     
                Set.addAll(color);
                listSet.addAll(Set);//On efface les doublons et on les remets sous forme de liste
     
                Collections.sort(listSet);
                Collections.sort(color);
     
                int topCompteur=0;
                int nouveau =0;
                int compteur = 0;
     
     
     
     
                for(int i=0; i<listSet.size();i++){ 										
                   String suivant = listSet.get(++i);
                      if ((i%2)== 1){
     
                    	  for(int j=0; j< color.size(); j++){	
     
                    		  boolean egalite = color.get(j).equals(listSet.get(i));
     
     
                    		  if(egalite == false){ 										
                    			  nouveau++;																
     
                    			  boolean condition2 = color.get(j).equals(suivant); 				
     
                    			  if(condition2 == false)											
                    			  	{break;}
                    		  }
                    		  if(color.get(j).equals((listSet.get(++i))))
                    			  if(egalite == true){ 													
                    				  compteur++;
                    			  }      			
                    	  }
     
                   	if (topCompteur==nouveau || topCompteur==compteur)
                				{top.add(listSet.get(i));}
                	if (topCompteur<nouveau || topCompteur<compteur){
               	      	if (nouveau < compteur)
               	      		topCompteur = compteur;
               	      	else
               	      	{topCompteur = nouveau;}
        				top.clear();
           				top.add(listSet.get(i));
     
                	}         			
     
                	 } 
     
                }               
               System.out.println(top);         
        }
     
    }

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    bon si je ne me trompe pas c'est un double post comme il te la était dit dans l'autre post il te faut un Comparator qui doit évaluer la valeur de chaque String

    alors voila un exemple ( un peut plus qu'un exemple même c'est la solution) qui ne prend pas en compte les ex aequo mais la il faut bien que tu réfléchisse un peur

    la class main
    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
    public class StatisticsTest {
     
        public static void main(String[] args) {
     
            ArrayList<String> color = new ArrayList<String>();
            //5 Rouge; 6 Bleu; 3 Vert; 2 Jaune
            color.add("Rouge");
            color.add("Rouge");
            color.add("Rouge");
            color.add("Vert");
            color.add("Bleu");
            color.add("Bleu");
            color.add("Bleu");
            color.add("Bleu");
            color.add("Jaune");
            color.add("Vert");
            color.add("Vert");
            color.add("Rouge");
            color.add("Rouge");
            color.add("Jaune");
            color.add("Bleu");
            color.add("Bleu");
     
            Collections.sort(color, new CouleurComp(color));
     
            for(String s : color){
                System.out.println(s);
            }
     
        }
    }
    la class Comparator
    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
    public class CouleurComp implements Comparator<String> {
     
        Map<String, Integer> poidValeurs = null;
     
        public CouleurComp(Map<String, Integer> poidValeurs) {
            this.poidValeurs = poidValeurs;
        }
     
        public CouleurComp(List<String> Valeurs) {
            this.poidValeurs = new HashMap<String, Integer>();
            Set<String> set = new HashSet<String>();
            // on compte le nombre de chaque couleur
            for (String s : Valeurs) {
                if (set.add(s)) {
                    poidValeurs.put(s, new Integer(1));
                } else {
                    poidValeurs.put(s, poidValeurs.get(s) + 1);
                }
            }
     
            System.out.println(poidValeurs);
        }
     
        public int compare(String o1, String o2) {
            return poidValeurs.get(o2) - poidValeurs.get(o1);
        }
    }
    le output

    {Bleu=6, Vert=3, Jaune=2, Rouge=6}
    Bleu
    Bleu
    Bleu
    Bleu
    Bleu
    Bleu
    Rouge
    Rouge
    Rouge
    Rouge
    Rouge
    Rouge
    Vert
    Vert
    Vert
    Jaune
    Jaune

  3. #3
    Invité
    Invité(e)
    Par défaut
    C 'est très gentil rolfone, seulement je suis un peu perdu.
    J'ai pas l'habitude de travaillé avec les Map, et encore moins avec les comparators.(débutant oblige ;-) )
    Puis je dois avoir ça dans la même classe :-/
    Je me doute que pour trouvé l'ex aequo, je dois trier la map par valeurs et tester de chacune des valeurs.

    Puis mon but est simplement de faire apparaitre la(les) clés qui a la valeur(s) la plus élevé. Sans faire apparaitre la valeur.

    Excuse moi du double post, mais c'est que d'une part je suis un peu presser, que j'ai essayé beaucoup par moi même et qu'au final mon code de l'ancien post changeais beaucoup par rapport a la situation initiale.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    tu a juste besoin de connaitre le count de chaque valeur est les classé en fonction de cette valeur ?

    en fait tu veut juste la 1er ligne de mon output mais classé ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui , enfait même moins,
    Dans ton output (d'exemple-solution) je veux simplement, rouge et Bleu car il y a un cas d'ex aequo (6 chacun)

    Imaginons le cas où il y a que 5 rouge, alors j'aimerais avoir un output qui dit :
    Bleu
    Je sais que c'est pas très sorcier mais malheureusement, je peine depuis plus d'une semaine, (la actuelement j'essaye avec des double tableaux)

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    Citation Envoyé par tzusiou Voir le message
    Puis je dois avoir ça dans la même classe :-/
    cette condition t'est imposé pour quel raison ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    C'est les directive du professeur, et je suppose que c'est parce qu'il y a des class test qui nous permettent de voir si les résultat obtenu sont correcte.

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    dit moi si c'est un exercice les restrictions que tu a.

    par exemple peut tu utiliser les Map ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Oui j'ai le droit d'utilisé les map, set, list.
    de créer des nouvelle méthode.
    La seul chose défendue est la création de nouvelle classe et l'utilisation d'un code qu'on ne sait pas expliqué.

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

Discussions similaires

  1. [XL-2003] Suppression lignes dans une liste puis trier cette liste
    Par graphikris dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/05/2013, 08h55
  2. VBS listes / boucles
    Par hir0. dans le forum VBScript
    Réponses: 0
    Dernier message: 26/05/2009, 10h54
  3. [list] boucle de vidage
    Par ZaaN dans le forum C++
    Réponses: 7
    Dernier message: 30/01/2007, 09h57
  4. [langage] Liste + Boucle
    Par Girzi dans le forum Langage
    Réponses: 13
    Dernier message: 31/10/2006, 19h11
  5. [Debutant(e)]Trier une liste
    Par LeDébutantJava dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 19/08/2004, 12h44

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