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 :

supprimer dans une arrayList


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Par défaut supprimer dans une arrayList
    bonjour ,
    je cherche à supprimer une personne selon un nom , mais ça ne marche pas quand je met une condition sur le champs s'il est vide ou pas ( lignes en rouge), lorsque j'enlève les conditions ça marche :
    méthode pour supprimer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     public  static void supprimer(String n)
        {
            for(int i=0 ; i <lp.size() ; i++)
            {
     
                    lp.remove(lp.get(i).getNom());  
                    lp.remove(lp.get(i).getPrenom());
                    lp.remove(lp.get(i).getAdresse());
                    lp.remove(lp.get(i).getDateNaissance()); 
            }
        }
    code du bouton supprimer :

    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
        private void btnSuppActionPerformed(java.awt.event.ActionEvent evt) {                                        
          JOptionPane j = new JOptionPane();
          
               String n= jNom.getText();
                if(n.equals("")){   j.showMessageDialog(null,"CHAMP VIDE","confirmation", JOptionPane.ERROR_MESSAGE);
                }
    else    if(!n.isEmpty())   
                {
                    int op= j.showConfirmDialog(null,"choisie une réponse","oui,Non",JOptionPane.YES_NO_OPTION , JOptionPane.QUESTION_MESSAGE);
                    if (op == JOptionPane.OK_OPTION)
                    {
                           Stockage.supprimer(n);
                           j.showMessageDialog(null,"personne  "+n+" Supprimée","confirmation", JOptionPane.INFORMATION_MESSAGE);
                    } 
             }               
        }
    merci

  2. #2
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Par défaut
    D'abord, tu n'as besoin de else if : à partir du moment où tu y mets exactement le contraire de la condition du if, le else suffit. Ensuite, pour tester si la chaine est vide il vaut mieux utiliser le isEmpty() puisqu'il est fait pour ça (il renvoit true quand la longueur de ta chaine est == à 0). Et tant qu'à faire, utiliser la fonction trim() qui permet d'enlever les espaces en début et fin de chaine. Du coup, si tu a une chaine qui ne contient que des espaces vides, elle sera aussi considérée comme vide (si tu veux aussi en tenir compte pour ta suppression bien sur ^^).

    Donc, essaie avec une condition comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(n.trim().isEmpty()) {
    //code si n est vide
    } else {
    //code si n n'est pas vide
    }

  3. #3
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Par défaut
    ça ne change rien ça reste presque le même code

  4. #4
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 3
    Par défaut
    Bah oublier un ; change pas beaucoup le code non plus et pourtant ça retourne quand même une erreur qui empêche le code de fonctionner...

    Après, j'avoue que j'ai pas regardé ce que tu as mis dans ton if et ton else if donc il y a peut-être des erreurs là aussi (comme tu as dit que ça fonctionnait sans la condition, je m'y suis pas attardé), mais ce que je t'ai posté est propre et fonctionne.

    Après, si tu vois pas ce que ça change, tu peux toujours demander ce qu tu comprends pas^^

  5. #5
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Ta méthode pour supprimer ne peut pas fonctionner:
    - tu passes un paramètre que tu n'utilises pas
    - ta liste contient des objets (dont j'ignore le nom, mais qui ne sont pas des String) et tu demandes de faire un remove en passant getNom, getPrenom, getAdresse : ça ne supprimera jamais rien !

    Ce qu'il faudrait faire, c'est ça (si tu veux pouvoir supprimer n'importe quoi dès qu'il y a la moindre correspondance sur un des champs)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public  static void supprimer(String n){
            boolean remove = false;
            for(int i=0 ; i <lp.size() ; i++) {
                    remove = lp.get(i).getNom().equals(n); // test si le nom est identique
                    remove |= lp.get(i).getPrenom().equals(n); // test si le nom est identique
                    remove |= lp.get(i).getAdresse().equals(n); // test si l'adresse est identique
                    remove |= lp.get(i).getDateNaissance().equals(n); // test si la date de naissance est identique
                    if (remove){
                           lp.remove(lp.get(i));
                    }
            }
        }
    Il vaudrait mieux passer par un Iterator et utiliser la fonction remove sur l'iterator celà-dit.


    Et change le test sur le champ saisi comme indiqué par samlek989

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 279
    Par défaut
    Ta liste contient un ensemble d'objets.

    Quand tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lp.remove(lp.get(i).getNom());
    ca fait quoi ?

    Pour supprimer un element de la liste, il faudrait passer l'index de l'element a supprimé dans la méthode remove comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lp.remove(index_element_a_supprimer)

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

Discussions similaires

  1. Parcourir et supprimer un objet dans une ArrayList
    Par Eausport dans le forum Collection et Stream
    Réponses: 32
    Dernier message: 03/08/2012, 10h28
  2. Supprimer efficacement plusieurs entrées dans une ArrayList
    Par Djakisback dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 15/02/2011, 02h26
  3. [Collections]enlever des éléments répétés dans une ArrayList
    Par apan dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 23/03/2006, 13h28
  4. [C#] Tri d'objet dans une ArrayList
    Par guillaume16 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/03/2006, 12h05
  5. [Collections]Supprimer des doublons dans une ArrayList
    Par emie31 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/12/2005, 15h15

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