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 :

Probleme d'interpretation de code


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut Probleme d'interpretation de code
    Bonjour,

    Je suis sur mon premier projet Java et j'ai un probleme de comprehension.

    J'ai cherché une reponse sur le forum mais j'ai pas trouvé satisfaction. J'espere que vous pourrez m'aidez.

    Le probleme se situe entre ces lignes de codes.(liste est du type Hashtable)

    if(liste.containsKey(id))
    et
    if(liste.containsKey(new Integer(id)))

    Pour moi la premiere ligne signifie que on rentre dans le bloc si id est une clé dans la liste.
    La deuxieme ligne est pour moi toujours fausse ou alors aura le meme effet que la premiere.
    Elle est pour moi toujours fausse car une nouvelle instantiation de l'objet id n'est pas une clé dans la liste.

    Merci de votre aide...

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Ben ecoute ca depend de quel type est id.
    Si c'est un entier la premiere ligne est fausse car containsKey prends comme parametre un Object. Or int est un type primitif et donc ce n'est pas un objet.

    Voici un extrait de l'api :
    containsKey
    public boolean containsKey(Object key)
    Tests if the specified object is a key in this hashtable.
    Specified by:
    containsKey in interface Map<K,V>
    Parameters:
    key - possible key.
    Returns:
    true if and only if the specified object is a key in this hashtable, as determined by the equals method; false otherwise.
    Throws:
    NullPointerException - if the key is null.
    See Also:
    contains(Object)

  3. #3
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,



    Cela dépend du type de id, qui peut être int ou String d'après les constructeurs de Integer et puisque tu ne le précise pas...

    Si id est un int, cela signifie que tu utilises Java 5.0 au minimum car dans la première ligne il y a de l'autoboxing (id est implicitement convertie en Integer), et dans ce cas là les deux lignes renverront le même résultat puisque les deux clefs sont identique.


    Par contre si id est une String, le résultat ne sera pas le même puisque d'un coté tu compares un entier et de l'autre une chaine de caractère...


    a++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut Probleme d'interpretation de code
    id est un entier donc vous me dites qu'il y a pas de diff.

    En fait je dois deboguer un logiciel est je comprends pas alors pourquoi le programmateur a utilisé sans cesse le systeme

    if(liste.containsKey(new Integer(id)))

    Merci de vos reponses

  5. #5
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par xduris
    En fait je dois deboguer un logiciel est je comprends pas alors pourquoi le programmateur a utilisé sans cesse le systeme

    if(liste.containsKey(new Integer(id)))
    La réponse t'as été donné par willoi et par moi : avant Java 5.0 il fallait obligatoirement convertir les types primitifs en objets...


    Plus d'info sur l'autoboxing : http://lroux.developpez.com/article/..._2#Lautoboxing


    a++

  6. #6
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Citation Envoyé par xduris
    pourquoi le programmateur a utilisé sans cesse le systeme
    Un programmateur est un appareil!
    Un programmeur est un humain!

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 166
    Par défaut Probleme d'interpretation de code
    Donc pas de diff.

    Merci

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

Discussions similaires

  1. [MySQL] Probleme requete sql et code html
    Par needles94000 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/03/2006, 17h38
  2. probleme d'insertion de code assembleur dans du c++
    Par Pragmateek dans le forum C++
    Réponses: 4
    Dernier message: 05/03/2006, 23h30
  3. Probleme avec un petit code (je debute)
    Par cladou dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 10/01/2006, 18h56
  4. Probleme en compilant le code avec C2.EXE ?!?!?
    Par angelevil dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/11/2005, 16h13
  5. Réponses: 3
    Dernier message: 07/04/2003, 20h06

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