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 :

ArrayList comptage et regroupement


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut ArrayList comptage et regroupement
    Bonjour,
    Voila je me tourne vers vous pour résoudre un petit PB.

    J'ai une ArrayList compose d'item du genre :
    44fg
    85de
    89fg
    44fg
    Comme on peux le constater certains items y son plusieurs fois.
    Ce que je souhaiterai c'est pouvoir les rassembler et les compter
    44fg2
    85de
    89fg
    J'avais déjà fais ça avec du vb.net dont voici le code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     result.Sort()
                'Regroupement et comptage des items identiques(45DL,45DL donne 45DL2 et mis en tableau) 
                For i As Integer = 0 To result.Count - 1
                    For j As Integer = 0 To tab.Length - 1
                        If tab(j, 0) = result(i) Or tab(j, 0) = "" Then
                            tab(j, 0) = result(i)
                            Dim val As Double = tab(j, 1)
                            tab(j, 1) = val + 1
                            Exit For
                        End If
                    Next
                Next
    mais étant tout nouveau en Java je m'y perd.
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Utilise un Set à la place de List (ArrayList).

    A+.

  3. #3
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Merci pour la réponse.
    Le fait d'utiliser un SET empêche les doublons.
    Moi ce que je cherche c'est de savoir combien de fois apparait chaque terme.
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui, ce serait plutôt un Map<String, Integer>, du coup.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut proposition
    Salut,

    j'ai fait un petit test dis moi si ça te convient :

    1. Tu fais un objet qui contient un String et un compteur :

    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
    public class MonObjet{
     
        private String chaine;
        private int occurence;
     
        public MonObjet(String chaine, Integer occ) {
            this.chaine = chaine;
            this.occurence = occ;
        }
     
        public String getChaine() {
            return chaine;
        }
     
        public int getOccurence() {
            return occurence;
        }
    }
    2. Tu fais une petite methode pour compter ton ArrayList :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public ArrayList countMyItems(ArrayList<String> objets) {
            ArrayList<MonObjet> mesObjets = new ArrayList();
            while (!objets.isEmpty()) {
                String tmp = objets.get(0);
                int j = 0;
                while (objets.remove(tmp)) {
                    j++;
                }
                MonObjet a = new MonObjet(tmp, j);
                mesObjets.add(a);
            }
     
            return mesObjets;
        }
    Tu récupère un ArrayList avec ta chaîne et ton compteur d’occurrence.

    Tchao,


    Toutgrego
    F*ck it ! Do it !

  6. #6
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Merci pour ton aide toutgrego mais je ne voit pas comment me servir de ton code.
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  7. #7
    Membre averti Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Points : 350
    Points
    350
    Par défaut Explications
    OK,

    procède comme ceci :

    1. Dans ton IDE il faut creer une classe nommée 'MonObjet' et t'y colle le code que je t'ai donné (le premier cadre) de sorte à tout remplacer.

    Enregistre et ferme la classe.

    2. Crée une classe nommée 'Main' ou un truc du genre.

    Il faut coller la méthode que j'ai mis dans le deuxième cadre sous la déclaration de classe.

    3. Dans cette même classe tu fais ta méthode statique main tel que :


    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
     
    public static void main(String[] argv) {
            Main sd = new Main();
            ArrayList array = new ArrayList();
            ArrayList res = new ArrayList();
            array.add("grego");
            array.add("le");
            array.add("plus");
            array.add("le");
            array.add("beau");
            res = sd.countMyItems(array);
            for (int i = 0; i < res.size(); i++) {
                System.out.println("chaine : " + ((MonObjet)res.get(i)).getOccurence());
            }
     
        }
    4. Tu exécute ta classe main et tu obtiens ceci :

    Dis moi si tu as un problème,


    Tchao !
    F*ck it ! Do it !

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Pas très efficace le remove(), mais ça marche.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Merci c'est exactement ce qu'il me fallait
    Merci pour ta patience et pour tes explications
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

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

Discussions similaires

  1. aide sur regroupement et comptage
    Par salluste dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 17/06/2014, 14h24
  2. [AC-2003] Requête avec comptage et à plusieurs regroupements!
    Par js8bleu dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/01/2010, 01h23
  3. regrouper les objets d'un arraylist
    Par moonila dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 19/06/2009, 10h52
  4. comptage par regroupement
    Par Dorinn dans le forum Requêtes
    Réponses: 7
    Dernier message: 20/04/2009, 10h41
  5. sélection unique en fonction d'un attribut et comptage sur regroupement
    Par JMi$h€ll dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 16/10/2007, 11h18

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