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 :

Comparer le contenu de deux vecteurs


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Comparer le contenu de deux vecteurs
    Bonjour,

    J'ai une classe "UnderGroup" qui contient un vecteur V et un int cpt. J'ai un deuxième vecteur "Base" qui contient des éléments de type "UnderGroup".
    Pour éviter d'ajouter plusieur fois le même vecteur V dans le vecteur "Base", je veux tester si V existe déjà dans "Base".
    la méthode que j'utilise pour comparer s'appelle Existe:

    public boolean Existe(UnderGroup v) { return Base.containsAll(v.getData()); }

    dans la classe UnderGroup
    public Vector getData() { return V; }

    Le problème est que la méthode Existe me renvoie toujours false, même si le vecteur existe déjà dans le vecteur "Base". Quelqu'un saurait il me dire où est mon erreur?

    merci!!

  2. #2
    Membre confirmé Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Points : 605
    Points
    605
    Par défaut
    as tu redéfini ta méthoe equals() ou compareTo() je ne sais plus laquelle des 2 pour vérifier l'égalité de tes éléments dans ton vecteur ? Sinon j'ai peur qu'il ne vérifie les adresses de tes objets.
    Ni Dieu, ni maître, mais des frites bordel!

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par anitshka
    as tu redéfini ta méthoe equals() ou compareTo() je ne sais plus laquelle des 2 pour vérifier l'égalité de tes éléments dans ton vecteur ? Sinon j'ai peur qu'il ne vérifie les adresses de tes objets.
    c est equal qu il faut implementer, compareTo, c est pour les SortedSet ou SortedMap tels que treeSet et hashSet

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  4. #4
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par anitshka
    as tu redéfini ta méthoe equals() ou compareTo() je ne sais plus laquelle des 2 pour vérifier l'égalité de tes éléments dans ton vecteur ? Sinon j'ai peur qu'il ne vérifie les adresses de tes objets.
    il me semble que c'est equals() ( c'est le meme probleme qu'entre les chaines de caractere )
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  5. #5
    Membre confirmé Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Points : 605
    Points
    605
    Par défaut
    Citation Envoyé par SEMPERE Benjamin
    Citation Envoyé par anitshka
    as tu redéfini ta méthoe equals() ou compareTo() je ne sais plus laquelle des 2 pour vérifier l'égalité de tes éléments dans ton vecteur ? Sinon j'ai peur qu'il ne vérifie les adresses de tes objets.
    c est equal qu il faut implementer, compareTo, c est pour les SortedSet ou SortedMap tels que treeSet et hashSet
    En effet confirmation par la javaDoc
    public boolean contains(Object o)Returns true if this collection contains the specified element. More formally, returns true if and only if this collection contains at least one element e such that (o==null ? e==null : o.equals(e)).
    Ni Dieu, ni maître, mais des frites bordel!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut Re: Comparer le contenu de deux vecteurs
    Citation Envoyé par misou83
    Pour éviter d'ajouter plusieur fois le même vecteur V dans le vecteur "Base", je veux tester si V existe déjà dans "Base".
    Les Set le font automatiquement non?
    De toute facon il faut eviter d'utiliser les Vector, regarde la FAQ pour les informations pratiquessur les Collections.
    Mais oui dans ce cas la aussi faut definir ce que tu appelele "egale" par une nouvelle implementation de equals()

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Quoi utiliser alors si les Vecteurs sont a eviter ? ArrayList ?

    Edit: c bon c'est dans la FAQ, honte a moi.
    Par contre l'arrayList n'est pas thread safe, ne faut t'il pas mieu utiliser Vector alors lors d'utilisaiton en multi-thread ?

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par barksy
    Quoi utiliser alors si les Vecteurs sont a eviter ? ArrayList ?

    Edit: c bon c'est dans la FAQ, honte a moi.
    Par contre l'arrayList n'est pas thread safe, ne faut t'il pas mieu utiliser Vector alors lors d'utilisaiton en multi-thread ?
    si tout a fait le vector doit etre utilise dans l environnement multi threadé a la place de l ArrayList

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut Re: Comparer le contenu de deux vecteurs
    Citation Envoyé par TabrisLeFol
    Citation Envoyé par misou83
    Pour éviter d'ajouter plusieur fois le même vecteur V dans le vecteur "Base", je veux tester si V existe déjà dans "Base".
    Les Set le font automatiquement non?
    De toute facon il faut eviter d'utiliser les Vector, regarde la FAQ pour les informations pratiquessur les Collections.
    Mais oui dans ce cas la aussi faut definir ce que tu appelele "egale" par une nouvelle implementation de equals()
    Les set le font effectivement mais il faut au prealable que les objets que tu ajoutent au set implementent Comparable

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci pour votre aide!

    Je vais essayer comme çà

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    penses au tag resolu

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    petit Tip pour la methode egale, meme si parfois c'est pas respecter meme dans l'API de sun...

    Elle est sensée etre reflective, symetrique, transitive, coherente et pour tout parametre null renvoyer false...

    En general, son implementation commence par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(this==obj) return true; // meilleure performance
    if(obj == null) return false; // repecte les specification
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(getClass()!=obj.getClass()) return false;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!(obj instanceof MyClass)) return false;
    egalement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!super.equals(obj)) return false;
    peut servir si on connait bien les tests effectuer par la classe parent...

    Et avec le jdk 5.0, il faudrait rajouter dans la doc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @Override public boolean equals(Object obj)

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

Discussions similaires

  1. Comparer le contenu de deux fichiers
    Par Sancti_Eyes dans le forum Langage
    Réponses: 7
    Dernier message: 03/05/2009, 10h54
  2. comparer le contenu de deux cellules
    Par maroinoide dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2009, 12h53
  3. Comparer le contenu de deux cellules
    Par _Nimy_ dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/05/2008, 16h18
  4. Comparer le contenu de deux requêtes
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 04/05/2006, 11h43
  5. comparer le contenu de deux tables?
    Par sessime dans le forum Requêtes
    Réponses: 5
    Dernier message: 07/03/2006, 14h05

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