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 :

Compter nombre de répétitions des valeurs dans un tableau


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Par défaut Compter nombre de répétitions des valeurs dans un tableau
    bonjour
    svp je cherche le code source en java pour compter nombre de répétition des valeurs dans un tableau.
    par Exemple: l'utilisateur saisit la séquence de nombre suivantes:

    12 14 15 12 22 30 12 22

    Vous affichez:

    12: 3 fois
    14: 1 fois
    15: 1 fois
    22: 2 fois
    30: 1 fois

  2. #2
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Bonsoir,

    Pourquoi ne le fait tu pas toi même?
    ça te prendras moins de temps que de chercher le code tout fait.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 4
    Par défaut
    je ai commencé mais je n'arrive pas a faire la partir de compter les valeur répéter malheureusement .
    voila le code:
    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
    import java.util.Scanner;
    public class Tab{
     
    	public static void main (String [] args){
         int valeur=0;
     
       	//déclaration du tableau
    	int []valeurtab = new int[20];
     
    		   // affichage du contenu
             System.out.println("affichge du tableau des valeur ayant une taille de :" +valeurtab.length );
     
              // création objet de type scanner
                   Scanner scan = new Scanner(System.in);
     
          // demande de saisie les valeurs
             System.out.println("S.V.P 10 valeurs entre 0 et 30 :") ;
        for (int indice = 0 ; indice < valeurtab.length ; indice++){
                        valeur =scan.nextInt() ;
     
                                        // TESTER la valeur si entre 0 et 30
                                          while (valeur<0 || valeur >30 ){
    	                                     //	String junk =scan.next();
    	                                        System.out.print("S.V.P, Bien saisir une valeur entre 0 et 30: ");
    	                                         valeur =scan.nextInt() ;
    	                                       }
                            valeurtab[indice]=valeur;
     
    System.out.println("valeur sure indice "+indice+" est: "+valeurtab[indice]);
     
    }
     
     
     
    }
     
    }

  4. #4
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Bonjour,

    Si en plus il y a une contrainte entre 0 & 30 alors ce n'est pas compliqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int[] tabResult = new int[31];
    //Initialiser tabResult a 0 pour chaque case
     
    //Insere les valeurs de valeurtab vers tabResult
    for(int i=0;i<valeurtab.lenght;i++){
    tabResult[valeurtab[i]] ++;
    }
     
    //Affichage
    for(int i =0;i<tabResult.lenght;i++){
    System.out.println(i +" : "+ tabResult[i]+" fois ");
    }
    Exemple :
    valeurTab : 0,5,1,2,3,4,1,2,3,1,2,4
    tabResult sera égal à : 1,3,3,2,2,1 -> un 0, 3 un, 3 deux,2 trois,2 quatre, 1cinq

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Perso j'aurais utilisé une simple Map sans me préoccuper des perf :

    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
     
    public static void main(String[] args) {
    	// Tableau à compter
    	final int[] tab = { 12, 14, 15, 12, 22, 30, 12, 22 };
     
    	// Comptage
    	Map<Integer, Integer> map = new HashMap<Integer, Integer>();
    	for (Integer item : tab) {
    		Integer nombre = map.get(item);
    		if (nombre == null) {
    			nombre = 0;
    		}
    		nombre++;
    		map.put(item, nombre);
    	}
     
    	// Affichage
    	for (Integer key : map.keySet()) {
    		Integer nombre = map.get(key);
    		System.out.println("[" + key + "] --> " + nombre);
    	}
    }
    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [22] --> 2
    [12] --> 3
    [14] --> 1
    [30] --> 1
    [15] --> 1
    Si tu veux que ça s'affiche ou que ça compte en même temps que ta saisie, tu peux même utiliser une Map<String, Integer> sur le même principe que ci-dessus. Par besoin d'avoir un tableau avec toutes les valeurs possibles, sauf si tu sais à l'avance que toutes les valeurs seront choisies.
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  6. #6
    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 : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Citation Envoyé par thierryler Voir le message
    Perso j'aurais utilisé une simple Map sans me préoccuper des perf :
    Facile pour les perfs !

    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
     
    public static void main(String[] args) {
    	// Tableau à compter
    	final String[] tab = { "12", "14", "15", "12", "22", "30", "12", "22" };
     
    	// Comptage
    	Map<String, int[]> map = new HashMap<String, int[]>();
    	for (String item : tab) {
    		int[] nombre = map.get(item);
    		if (nombre == null) {
    			nombre = new int[] { 0 };
    		        map.put(item, nombre);
    		}
    		nombre[0]++;
    	}
     
    	// Affichage
    	for (String key : map.keySet()) {
    		int[] nombre = map.get(key);
    		System.out.println("[" + key + "] --> " + nombre[0]);
    	}
    }
    La solution idéale sans utilisé de map, c'est de trier le tableau (ou la liste) des données saisies et de compter le nombre de valeurs identiques successives.
    ex:
    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
     
    public static void main(String[] args) {
    	// Tableau à compter
    	final String[] tab = { "12", "14", "15", "12", "22", "30", "12", "22" };
     
    	// Comptage
            Arrays.sort(tab);
            String last=null;
            int count=0;
    	for (String item : tab) {
    		if (last == null) {
                    	count=1;
                    	last=tab;
                    } else if (last.equals(tab)) {
                    	count++;
                    } else {
                            System.out.println("[" + last + "] --> " + count);
                            last=tab;
                            count=1;
                    }
    	}
    	if (last != null) {
    		System.out.println("[" + last + "] --> " + count);
            }
    }
    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

  7. #7
    Invité de passage
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2021
    Messages : 1
    Par défaut Count Numbers Occurrences
    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
    		int[] tab = new int[] { 1, 1, 7, 3, 2, 2, 2, 4, 1 };
    		int[] count = new int[100];
    		/*
    		 * i : compteur, tmp : stocke temporairement la valeur à un certain index du
    		 * tableau tab[]
    		 */
    		int i, tmp = 0;
    		/*
    		 * tmp agira comme une valeur d'index pour le tableau count et gardera une trace
    		 * du nombre d'occurrences de chaque nombre
    		 */
    		for (i = 0; i < tab.length; i++) {
    			tmp = tab[i];
    			count[tmp]++;
    		}
    		for (i = 1; i < count.length; i++) {
    			if (count[i] > 0 && count[i] == 1) {
    				System.out.printf("%d se produit %d fois\n", i, count[i]);
    			} else if (count[i] >= 2) {
    				System.out.printf("%d se produit %d fois\n", i, count[i]);
    			}
     
    		}

Discussions similaires

  1. [WD10] Afficher des valeurs dans un tableau
    Par dj-julio dans le forum WinDev
    Réponses: 4
    Dernier message: 19/03/2014, 11h32
  2. Réponses: 7
    Dernier message: 01/01/2013, 18h03
  3. ecrire des valeurs dans un tableau via formulaire
    Par kenny49 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/07/2006, 10h23
  4. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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