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 :

Regrouper les données d'un tableau dans un String


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Par défaut Regrouper les données d'un tableau dans un String
    Bonjour,

    J'ai un objet Professeur qui contient des attributs Num, Nom, prénom etc...
    Jusqu'ici toutva bien...

    Un attribut me pose problème, c'est une "ArrayList" nommé "ListeEcole" qui contient le nom des écoles où enseigne le profeseeur.

    Ce que je voudrais et que je ne sais pas faire c'est de prendre chaque données du tableau et les mettres dans un String du genre à avoir

    Ecole1, Ecole2, Ecole3 etc... pour chaque professeur

    Je ne sais pas si j'ai été assez claire ?

    Merci de votre aide.

  2. #2
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Bonjour,
    il te suffit d'itérer sur chaque élément de ton ArrayList et de concaténer le résultat, en passant par un StringBuilder pour éviter trop de concaténation de String (qui sont lourdes en mémoire):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    StringBuilder toto=new StringBuilder();
    for(int i=0; i<ListeEcole.size(); i++){
     toto.append(ListeEcole.get(i));
     if(i<ListeEcole.size()-1) toto.append(", ");
    }
    String resultat = toto.toString();

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 90
    Par défaut
    Bonjour,

    tu peux essayer ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String ListeEcoleStr = new String("");
    String separator = new String(" ");
    for (int i = 0; i < ListeEcole.size(); i++)
    {
        ListeEcoleStr += ((String)ListeEcole.get(i)) + separator;
    }
    Si tu ne veux pas de "separator" à la fin, soit tu fais une condition spéciale pour le dernier tour de boucle (if (i == ListeEcole.size() - 1) car les index commencent à 0), soit tu fais un tour de boucle en moins (for (int i = 0; i < ListeEcole.size() - 1; i++) et après la boucle tu écris ListeEcoleStr += ((String)ListeEcole.get(i)); ). Je te conseille la dernière.

    J'espère que c'est ce que tu demandais.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par xeak2008 Voir le message
    c'est une "ArrayList" nommé "ListeEcole"
    Première remarque : essayes de respecter les conventions de nommages de Java afin d'obtenir un code plus compréhensible.
    (les noms d'attributs/variables comment par un minuscule).


    @Jidefix : La condition de ton if n'est pas bonne

    @Cbonniot : L'utilisation de l'opérateur + sur les String est assez couteux en mémoire (création de deux nouvels objets à chaque fois) et peut s'avérer catastrophique lorsque la quantité de donnée à traiter augmente...



    De même il est fortement conseillé d'éviter les parcours via index, car si cela fonctionne très bien avec les ArrayList cela peut être nettement plus couteux avec d'autres types de collections (comme LinkedList par exemple). Le meilleur choix serait d'utiliser un Iterator ou la boucle for-étendu...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	final String separator = ", ";
    	StringBuilder buffer = new StringBuilder();
    	// On ajoute tous les éléments suivie du séparateur :
    	for (String ecole : listEcole) {
    		buffer.append(ecole).append(separator);
    	}
    	// Et on supprime le dernier séparateur :
    	if (buffer.length()>0) {
    		buffer.setLength(buffer.length()-separator.length());
    	}
    	String resultat = buffer.toString();

    a++

  5. #5
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    @Jidefix : La condition de ton if n'est pas bonne
    C'était pour vérifier si vous suiviez

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jidefix Voir le message
    C'était pour vérifier si vous suiviez


    Et j'ai gagné quoi ?

    a++

  7. #7
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Citation Envoyé par adiGuba Voir le message


    Et j'ai gagné quoi ?

    a++
    Une grosse léchouille de Westie!

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

Discussions similaires

  1. Regrouper les données de plusieurs feuilles dans une
    Par djinero dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/10/2011, 23h47
  2. sauvegarder les données d'un tableau dans un fichier texte
    Par soumer dans le forum Interfaces Graphiques
    Réponses: 16
    Dernier message: 18/09/2011, 19h13
  3. Réponses: 4
    Dernier message: 27/05/2010, 09h07
  4. Boucles pour récuperer les données d'un tableau dans un autre.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/09/2007, 21h39
  5. Réponses: 6
    Dernier message: 27/09/2006, 20h27

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