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

avec Java Discussion :

[LinkedList<String>] Modification d'un élément non prise en compte


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 26
    Points : 11
    Points
    11
    Par défaut [LinkedList<String>] Modification d'un élément non prise en compte
    Bonjour,

    J'ai actuellement un souci avec une LinkedList<String> qui me perturbe car je ne pensais pas que ça puisse se produire...
    Mon 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
            int nbLigne = 0;
            for (Iterator<String> it = texte.iterator(); it.hasNext();)
            {
                nbLigne = nbLigne+1;
                String ligne = it.next();
                if (ligne.contains("\f"))
                {
                    nbLigne = 0;
                }
                else
                {
                    if (nbLigne==nbLigneMax || nbLigne==NB_MAX_LIGNE)
                    {
                        ligne = ligne.concat("\f");
                        nbLigne = 0;
                    }
                }
            }
    Avec mon fichier de test (de 360 lignes et un caractère de saut de page '\f'), j'ai nbLigneMax = 58 et NB_MAX_LIGNE = 100. Je devrais donc avoir plusieurs "pages".
    Or, si la variable "ligne" est bien modifiée, la LinkedList<String> texte ne l'est pas. Il me semblais pourtant qu'avec le système de référence ça marchait !

    Sauriez-vous d'où cela peut venir ?

    Merci

  2. #2
    Membre éclairé Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Points : 718
    Points
    718
    Par défaut
    La classe String est immuable...

  3. #3
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,

    Ce qui pose problème c'est cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ligne = ligne.concat("\f");
    en faite, avec le concat tu va creer une nouvelle instance de String.
    Une chaine est un objet un peu particulier qui a le comportement d'un type simple. il n'est pas possible de modifier une chaine.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    À noter que c'est assez simple à contourner en utilisant un ListIterator<String> (en appelant listIterator()), et sa méthode set().

    Il suffit de set() la nouvelle String à la place de l'ancienne.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Alkhan Voir le message
    bonjour,

    Ce qui pose problème c'est cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ligne = ligne.concat("\f");
    en faite, avec le concat tu va creer une nouvelle instance de String.
    Une chaine est un objet un peu particulier qui a le comportement d'un type simple. il n'est pas possible de modifier une chaine.
    Et quand je fais "ligne = " je change la valeur de ma variable ligne, pas celle qui est dans ma liste, c'est ça ? C'est logique mais faut le savoir

    Je vais essayer la solution de thelvin. Merci à tous !

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/11/2011, 22h40
  2. modification d'une méthode non prise en compte
    Par nina2007 dans le forum C++
    Réponses: 7
    Dernier message: 10/07/2010, 12h29
  3. [WD10] Modification de l'analyse non prise en compte
    Par mohamed9 dans le forum WinDev
    Réponses: 1
    Dernier message: 19/02/2010, 08h38
  4. Réponses: 8
    Dernier message: 18/07/2007, 15h41
  5. Modifications d'un .dbf non prises en compte
    Par ced00 dans le forum Bases de données
    Réponses: 2
    Dernier message: 15/09/2006, 17h50

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