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 :

La méthode "remove" de ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Membre confirmé Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Par défaut La méthode "remove" de ArrayList
    Je trouve vraiment aucune explication :s
    voici un code que j'ai mis dans main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    TierceModel tm = new TierceModel();
     
    tm.addCard(new Card(Deck.FOUR, 4, 'h', true));
    tm.addCard(new Card(Deck.THREE, 3, 'h', true));
    tm.addCard(new Card(Deck.FIVE, 14, 'h', true));
    tm.addCard(new Card(Deck.TWO, 1, 'h', true));
     
    System.out.println(tm);
    Bon, pour TierceModel, c'est une classe qui contient un ArrayList<Card> dont le nom est "cards".
    Pour Card, c'est un objet. son constructeur est le suivant :

    Card(String name, int value, char suit, boolean faceUp)

    Mon problème réside dans la méthode addCard, que j'ai préparé. Elle comporte ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    System.out.println("card "+card+" not added");
    cards.remove(card);
    System.out.println("remained :"+ cards);
    result = false;
    ...
    Normalement, l'objet 'card' afficher dans l'imprime écran de la première ligne, doit être celui effacé dans la ligne qui suit, n'est ce pas?
    pourtant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    card hcinka not added
    remained :[htris, hcinka]
    ...
    c'est ce que j'ai reçu :s
    y a t il une explication?

  2. #2
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,
    Est-ce la même instance de card qui est présent dans la liste et passé en paramètre dans le remove ou est-ce des clones ?

  3. #3
    Membre confirmé Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Par défaut
    J'ai mis au début comment j'ai construit les instances fnob.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    tm.addCard(new Card(Deck.FOUR, 4, 'h', true));
    tm.addCard(new Card(Deck.THREE, 3, 'h', true));
    tm.addCard(new Card(Deck.FIVE, 14, 'h', true));
    donc aucune relation entre les instances, et même la methode equal, elle est redéfinie de sorte que c'est impossible que ces instances soient égaux.

  4. #4
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Que fait la méthode equals de L'objet Card ?

    Car ArrayList utilise cette méthode pour déterminer s'il existe dans la liste une instance égale à celle passée en paramètre de la méthode remove.

    Si aucune instance trouvée n'est égale => pas de suppression.

  5. #5
    Membre confirmé Avatar de Iori Yagami
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 107
    Par défaut
    oh oh,
    je crois que j'ai oublié quelque chose là!
    oui, la méthode equal utilise une proprieté "index" dont la valeur devrait être unique pour chaque instance de Card. Mais elle est initialisée à "-1".
    Par conséquent toutes les cartes que j'ai utilisées dans l'exemple sont égales :s
    merci fnobb

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

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