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 :

Tester si des listes contiennent les memes elements


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Par défaut Tester si des listes contiennent les memes elements
    Bonjour,

    Voila mon but:
    J'ai une ArrayList qui contient une arrayList d'objets.
    Je veux m'assurer que chaque objet d'une liste apparait aussi dans toutes les autres.

    Genre:

    Liste 1 : "A" "B" "C"
    Liste 2 : "A" "C" "B"

    La c bon

    Liste 1 : "A" "B" "C"
    Liste 2 : "A" "C"

    La c pas bon

    Il y a une methode simple qui peut m'aider ? je dois tout ecrire ?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Devops
    Inscrit en
    Août 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Devops

    Informations forums :
    Inscription : Août 2006
    Messages : 107
    Par défaut
    Je pense que tu as besoin d'un HashSet (l'ordre n'est pas important). 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
     
    HashSet h1 = new HashSet();
    HashSet h2 = new HashSet();
    HashSet h3 = new HashSet();
     
    h1.add("A");
    h1.add("B");
    h1.add("C");
     
    h2.add("A");
    h2.add("C");
    h2.add("B");
     
    h3.add("A");
    h3.add("C");
     
    // Test vrai
    System.out.println(h1.equals(h2));
    // Test faux
    System.out.println(h1.equals(h3));

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Tu dois tout écrire... il n'y a pas de méthode dans l'API qui te permette de vérifier que tout objet d'une liste est bien dans une autre.

    Maintenant, en redéfinissant correctement "equals()", tu peux t'en sortir facilement avec la méthode "contains()" par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(Element e: liste1) {
       if(!liste2.contains(e)) { return false; }
    }
    return true;
    Mais vu la problématique, je pense que ta structure de données n'est pas bonne: un HashMap ou un HashSet serait plus indiqué si tu ne veux pas dégrader les performances.

    [EDIT] Grilled!
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    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,

    Tu peux aussi utiliser deux containsAll() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (list1.constainsAll(list2) && list2.containsAll(list1)) {
      // => OK
    }
    a++

  5. #5
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Par défaut
    Mmh merci beaucoup je vais etudier tout ca

  6. #6
    Membre confirmé
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2004
    Messages : 201
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,

    Tu peux aussi utiliser deux containsAll() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (list1.constainsAll(list2) && list2.containsAll(list1)) {
      // => OK
    }
    a++
    Je dois redefinir la methode .equals() pour ta solution non ? dans le cas ou g une liste d'objets que j'ai cree, et pas des types java natifs

  7. #7
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par metalcoyote Voir le message
    Je dois redefinir la methode .equals() pour ta solution non ? dans le cas ou g une liste d'objets que j'ai cree, et pas des types java natifs
    Oui, de même que pour la méthode "contains()" que je t'avais proposé.

    Désolé d'avoir oublié cette méthode... j'ai tendance à regarder par défaut l'API 1.4 qui m'est imposée pour le travail et à oublier ces ajouts bien sympathiques des nouvelles versions.

    Pour info, si tu regardes les sources des classes java de Sun, tu t'apercevra que la méthode "containsAll()" est équivalente à celle dont je t'ai donné le code dans mon post précédent
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  8. #8
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Citation Envoyé par CyberChouan Voir le message
    Oui, de même que pour la méthode "contains()" que je t'avais proposé.

    Désolé d'avoir oublié cette méthode... j'ai tendance à regarder par défaut l'API 1.4 qui m'est imposée pour le travail et à oublier ces ajouts bien sympathiques des nouvelles versions.

    Pour info, si tu regardes les sources des classes java de Sun, tu t'apercevra que la méthode "containsAll()" est équivalente à celle dont je t'ai donné le code dans mon post précédent
    Il faut aussi savoir que ça existe en 1.4, la preuve :

    http://javasearch.developpez.com/j2s...il.Collection)

    F.

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

Discussions similaires

  1. [XUL] Comportement des images dans les listes item
    Par Christophe Charron dans le forum Autres langages pour le Web
    Réponses: 1
    Dernier message: 02/03/2007, 12h50
  2. des questions sur les listes chainées
    Par hunter99 dans le forum C
    Réponses: 13
    Dernier message: 05/12/2006, 22h51
  3. choisir ds une liste charge une autre liste par les bons elements
    Par kamaldev dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/07/2006, 10h06
  4. Réponses: 1
    Dernier message: 03/11/2005, 14h21
  5. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32

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