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 :

StringBuilder quand on connais pas la taille du string


Sujet :

Langage Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 263
    Points
    263
    Par défaut StringBuilder quand on connais pas la taille du string
    Bonjour a tous.

    Je dois recuperer des resultats d'une requete sql dans une boucle, et les stocker dans un StringBuilder. Le probleme est que je ne connais pas la taille a l'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                while(rs.next())
                {
                    my_string.append(rs.getString("name"));
                    my_string.append("<br />");
                }
    Pour le moment j'alloue une taile max (dont j suis sure que le tout ne depassera pas cette taille) et je fais un trimToSize() a a fin. Mais je trouve pas tres jolie comme methode, je me demandais si ya pas mieux.

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu n'as pas l'obligation de fixer une taille. Le StringBuilder s'agrandira automatiquement si besoin...

    a++

  3. #3
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Non, c'est la bonne façon de faire : instancier le StringBuilder avec une approximation ou un majorant de la taille maximale.

  4. #4
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour.

    Il n'est pas obligatoire de connaître la taille de ta chaîne finale au moment d'initialiser ton StringBuilder.

    Un StringBuilder augmentera sa capacité tout seul lorsqu'il en aura besoin.
    Donc aucun soucis pour toi.

    Après, il est vrai que l'idéal est de l'initialiser avec une valeur proche (légèrement au-dessus) de sa taille finale afin d'éviter ou de limiter au maximum l'opération de redimensionement.

    Edit: grillé deux fois!

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 263
    Points
    263
    Par défaut
    ok, merci. Je voulais justement preciser la taille pour eviter l'operation de redimensionnement dans la boucle.

  6. #6
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    A chaque redimensionnement, la capacité est doublée : (capacite+1)x2

    Donc cette opération arrivera un nombre assez limité de fois normalement.

  7. #7
    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
    À noter que trimToSize() est inutile, à moins de vouloir garder l'objet StringBuilder rangé quelque part pour sa collection.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/11/2011, 20h25
  2. Réponses: 23
    Dernier message: 26/04/2006, 19h58
  3. Internet Explorer ne respecte pas la taille 100% du tableau
    Par Rbot dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 18/03/2006, 17h32
  4. Une classes dont je ne connais pas le nom :(
    Par Fy_Hertz dans le forum Windows
    Réponses: 10
    Dernier message: 16/01/2006, 12h33
  5. Réponses: 2
    Dernier message: 14/01/2006, 20h29

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