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 :

soucis avec collection.contains


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 47
    Par défaut soucis avec collection.contains
    Bonjour a tous,
    j'ai une ArrayList<MaClasse>
    MaClasse a un attribu id et un attribu name avec les getters et setter qui vont avec
    MaClasse a aussi cette methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Override
    	public boolean equals(Object obj){
    		System.out.println("Comparaison de 2 objets");
    		MaClasse maClasse = (MaClasse) obj;
    		if(maClasse.getName().equals(name)){
    			System.out.println("ils sont égaux");
    			return true;
    		}
    		else{
    			System.out.println("ils sont differants");
    			return false;
    		}
    	}
    Mon soucis est que lorsque j'utilise la méthode contains sur mon arrayList celle ci n'execute pas ma méthode equals, le débug n'a rien donné non plus :-(
    Si vous avez des pistes je suis preneur

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    On peut voir le code de MaClasse ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 47
    Par défaut
    Voici le code complet de MaClasse, elle est on ne peut plus simple
    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
    46
    47
    48
    49
    50
     
    public class MaClasse {
     
    	private int id;
    	private String name;
     
    	public MaClasse(){
     
    	}
     
    	public MaClasse(String name){
    		this.name = name;
    	}
     
    	public MaClasse(int id, String name) {
    		super();
    		this.id = id;
    		this.name = name;
    	}
     
    	public int getId() {
    		return id;
    	}
     
    	public void setId(int id) {
    		this.id = id;
    	}
     
    	public String getName() {
    		return name;
    	}
     
    	public void setName(String name) {
    		this.name = name;
    	}
     
    	@Override
    	public boolean equals(Object obj){
    		System.out.println("Comparaison de 2 objets");
    		MaClasse objet= (MaClasse) obj;
    		if(objet.getName().equals(name)){
    			System.out.println("ils sont égaux");
    			return true;
    		}
    		else{
    			System.out.println("ils sont differants");
    			return false;
    		}
    	}
    }
    Le code de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Arraylist<MaClasse> maCollection;
    //chargement de ma collection grace a Hibernate 
    if(maCollection.contains("un text recherché")){
    //un traitement qui n'est jamais executé
    }
    Mon code s'execute sans erreur, le soucis est que le programme n'entre jamais dans le if malgres les bonnes données vu dans le mode debug

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Une remarque : il se pourrait que "name" soit null et ta méthode "equals" se planterait

    Sinon, peux-tu également montrer ton code de test ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 47
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Une remarque : il se pourrait que "name" soit null et ta méthode "equals" se planterait

    Sinon, peux-tu également montrer ton code de test ?
    name ne peut etre null

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Si, comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaClasse c = new MaClasse();
    Ton test est à l'envers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    if (maCollection.contains("un text recherché"))
    { 
       //un traitement qui n'a jamais été executé
    }
    il faudrait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    if ( ! maCollection.contains("un text recherché"))
    {
       //un traitement qui n'a jamais été executé
    }
    (si c'est bien un traitement à faire une seule fois que tu veux)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Par défaut
    dans getName et setName, tu as une variable pName qui correspond à rien et donc la méthode "equals" rend toujours false

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

Discussions similaires

  1. quelques soucis avec word 2000
    Par ramchou dans le forum Word
    Réponses: 3
    Dernier message: 06/09/2004, 18h13
  2. SOucis avec une reequete imbriquee
    Par Ni4k dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/03/2004, 08h56
  3. souci avec un algorithme
    Par slider16 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/03/2004, 17h17
  4. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

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