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 :

Vérifier si un String est dans un ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut Vérifier si un String est dans un ArrayList
    Salut

    j'utilise ArrayListe et je rencontre un probleme :

    Dans mon interface l'utilisateur saisie une date, et dans mon programme je controle cette date si elle existe dans ma table Mois dans la BDD alors je modifie uniquement les information d'une autre table si elle existe pas je l'insère dans ma table Mois.

    Voila on bout de 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
    ...
                                          String dad = jTextField.getText();
                                          ArrayList<String> lis = new ArrayList();
    						int ok=0;
     
    						try{
     
    							ResultSet res =stat.executeQuery("Select Mois From Mois");
    							while(res.next()){
     
    								lis.add(res.getString("Mois"));
     
    							}
     
    							for(int i=0; i<lis.size();i++)
    							{
    								if(lis.contains(dad))
    									{   ok =1;
     
    									}
    								else{
    									ok = -1;
     
    								}
    							}
     
    						if(ok==1){
     
    							String requete = "UPDATE Objectif SET Mois='"+dad+"', ObjTmvTrx='"+ObjTmvTrx+"', ObjTmc='"+ObjTmc+"', ObjTauxInc='"+ObjTauxInc+"', ObjFrm='"+ObjFrm+"', ObjTec='"+ObjTec+"', ObjdelaiAc='"+ObjdelaiAc+"', ObjdelaiCv='"+ObjdelaiCv+"', ObjdelaiPe='"+ObjdelaiPe+"' WHERE Nom_dd='"+dd+"' " ;  
    							stat.executeUpdate(requete);
     
    						}
    						else if(ok ==-1){
     
    							String insDat = "Insert into Mois (Mois) VALUES ('"+dad+"')";
    							stat.executeUpdate(insDat);
    							String req = "UPDATE Objectif SET Mois='"+dad+"', ObjTmvTrx='"+ObjTmvTrx+"', ObjTmc='"+ObjTmc+"', ObjTauxInc='"+ObjTauxInc+"', ObjFrm='"+ObjFrm+"', ObjTec='"+ObjTec+"', ObjdelaiAc='"+ObjdelaiAc+"', ObjdelaiCv='"+ObjdelaiCv+"', ObjdelaiPe='"+ObjdelaiPe+"' WHERE Nom_dd='"+dd+"' " ;  
    							stat.executeUpdate(req);
     
    						}
    }catch(Exception ex){
     ex.printStackTrace();
    }

    Mon probleme c'est qu'il trouve toujours ok=-1 Même si je rentre une date qui existe déjà dans la table Mois!

    Pourriez vous me dire c'est quoi ce probleme ?!

    Estce que le probleme vient de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(lis.contains(dad))
    ?!

    y a t'il une autre méthode dans les listes pour comparé une variable si elle est dans la liste ?!

    Merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Salut,

    Par exemple:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
       import java.util.ArrayList;
     
       public class ArrayListDemo3
       {
          public static void main(String[] args)
          {
             ArrayList<Object> arrL = new ArrayList<Object>();
     
             ArrayList<String> t3=new ArrayList<String>();
     
     
     
             t3.add ("Bonjour");
             t3.add ("Salut");
             t3.add ("xyz");
             t3.add ("salut");
             t3.add ("Salut");
             System.out.println("\nContenu de t3: " + t3);
     
          // Obtenir l'indice d'un item de l'ArrayList arrL
     
             boolean trouve = false;
             Object obj;
     
             obj = "Salut";
             int i = 0;
             System.out.println("On recherche l'objet " + obj + ":");
             for(i=0;i<t3.size();i++)
             {
                if(t3.get(i).equals(obj))
                {
                   System.out.println("item " + i + ": " + t3.get(i) + ".");
                   trouve = true;
                }
             }
             System.out.println("");
             if(!trouve)
                System.out.println("L'objet " + obj + " n'existe pas...\n");
          }
       }
    Cordialement,

    Dan

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 17
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    Tu peux aussi faire plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            List<String> mois = new ArrayList<String>();
            mois.add("Janvier");
            mois.add("Février");
            mois.add("Mars");
            //...
     
            String unMois = "Février";
     
            System.out.println("dans mois ? : " + mois.contains(unMois)); // renvoie true ou false
            System.out.println("dans mois ? : " + mois.indexOf(unMois)); // renvoie l'index ou -1 s'il n'est pas dans la liste
    Voire dans ton cas, un HashSet suffit.
    Pour ton erreur, es-tu sur que ta liste contienne bien le mois entré ? Fait un println de "dad" et "lis" pour vérifier.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    une raison particulière de faire un table "mois"?

    Mis à part ça, quelle nécessité de
    1) récupérer l'intégralité d'un table pour
    2) vérifier si un entrée s'y trouve et
    3) si c'est le cas l'utiliser dans un update ?

    C'est un peu contraire à la plupart des bonne pratique. De même que la construction de votre requete plutot que d'utiliser un PreparedStatement.


    Donc 1 créer un preparedStatement avec select * from Mois where Mois = ?
    Si 1 resultat au moins -> Le mois existe (pas besoin de pomper toute la table)

    et pour l'insertion, idem, un preparedStatement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Objectif SET Mois=? , ObjTmvTrx=?, ObjTmc=?, ObjTauxInc=?, ObjFrm=?, ObjTec=?, ObjdelaiAc=? , ObjdelaiCv=?, ObjdelaiPe=? WHERE Nom_dd=? " ;
    C'est plus lisible et évite les problème d'injection sql

  5. #5
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Merci danimo pour votre réponse

    Pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(t3.get(i).equals(obj))
    Je l'avais essai au début et elle ma donnée le même résulta qu'avec Contains

    Même si la date est dans le arrayliste mais le probleme passe directement a else !!!

    Aidez moi svp.

  6. #6
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Dsl tchize je viens de voir votre réponse, Merci a vous aussi


    une raison particulière de faire un table "mois"?

    Mis à part ça, quelle nécessité de
    1) récupérer l'intégralité d'un table pour
    2) vérifier si un entrée s'y trouve et
    3) si c'est le cas l'utiliser dans un update ?
    la table moi est lié a une autre table entre ces deux table ce trouve une classe associative Objectif donc lors du passege aux modeles relationnelles j'aurais une table :
    Objectif(Mois,dd,obj)

    Et dans mon application l'utilisateur peux faire certaine modification sur les objectif, donc si il modifier la date et cette date elle ne serait pas dèja presente dans la table mois, la il y aura une erreur avec Sql, c'est pour cela je serais obligé de vérifier si la date existe déja si elle existe pas je l'insere. Voila

    Donc 1 créer un preparedStatement avec select * from Mois where Mois = ?
    Si 1 resultat au moins -> Le mois existe (pas besoin de pomper toute la table)
    Je comprends pas bien le rôle des préparedStatement mais je vais éssai de voir, peut être je vais sortir avec


    Merci

  7. #7
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Ouf Tant mieux j'ai résolue le probleme j'avais un probleme au niveau des accolades.

    Merci encore une fois danimo, votre morceau de code ma bien aidé Thank's

    Et Merci a vous tous pour toutes vos réponses

  8. #8
    Membre régulier Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Points : 116
    Points
    116
    Par défaut
    Je comprends pas bien le rôle des préparedStatement mais je vais éssai de voir, peut être je vais sortir avec
    La réponse de tchize_:
    évite les problème d'injection sql
    tous simplement une question de sécurité.
    Ah ça y’est, j’viens de comprendre à quoi ça sert la canne. En fait ça sert à rien… Du coup ça nous renvoie à notre propre utilité : l’Homme face à l’Absurde !

    -Perceval-

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Tora21 Voir le message

    tous simplement une question de sécurité.
    et de lisibilité du code, et de facilité de programmation

  10. #10
    Membre régulier Avatar de Tora21
    Homme Profil pro
    Développeur("Java"); //Débutant
    Inscrit en
    Mai 2011
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur("Java"); //Débutant

    Informations forums :
    Inscription : Mai 2011
    Messages : 140
    Points : 116
    Points
    116
    Par défaut
    voilà tous est dit !!!
    Ah ça y’est, j’viens de comprendre à quoi ça sert la canne. En fait ça sert à rien… Du coup ça nous renvoie à notre propre utilité : l’Homme face à l’Absurde !

    -Perceval-

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Citation Envoyé par info3licen Voir le message
    Merci danimo pour votre réponse

    Pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(t3.get(i).equals(obj))
    Je l'avais essai au début et elle ma donnée le même résulta qu'avec Contains

    Même si la date est dans le arrayliste mais le probleme passe directement a else !!!

    Aidez moi svp.
    Modifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int i=0; i<lis.size();i++) {
     if(lis.contains(dad)) { 
    ok =1; 
    }
     else{ 
    ok = -1; 
    }
    }
    comme ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int i=0; i<lis.size();i++) {
     if(lis.contains(dad)) { 
    ok =1; 
    } 
    else{ 
    if(ok = 0)
    ok = -1; 
    }
    }

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/11/2009, 17h40
  2. [XL-2003] vérifier si heure + date est dans l'intervalle
    Par dawood dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/05/2009, 17h46
  3. Vérifier si une valeur est dans un tableau croisé dynamique
    Par psykodumarteau dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/07/2008, 13h39
  4. vérifier si un scalaire est dans une un tableau
    Par STEPH69000 dans le forum Langage
    Réponses: 6
    Dernier message: 04/06/2006, 17h48

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