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 :

Problème d'intersection de 2 ensembles


Sujet :

Langage Java

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut Problème d'intersection de 2 ensembles
    Bonjour,

    Comment se code l'intersection de 2 ensembles

    Merci par avance

  2. #2
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Si tu veux l'intersection (éléments en commun) des "clés" de ta Map :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    query1.getMap().keySet().retainAll(query2.getMap().keySet());
    , sinon si c'est sur les "valeurs" de ta Map que tu veux travailer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    query1.getMap().entrySet().retainAll(query2.getMap().entrySet());
    .
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

  3. #3
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    http://java.sun.com/j2se/1.4.2/docs/...til.Collection)
    public boolean retainAll(Collection c)

    Retains only the elements in this list that are contained in the specified collection (optional operation). In other words, removes from this list all the elements that are not contained in the specified collection.

    Specified by:
    retainAll in interface Collection

    Parameters:
    c - collection that defines which elements this set will retain.
    Returns:
    true if this list changed as a result of the call.
    Throws:
    UnsupportedOperationException - if the retainAll method is not supported by this list.
    ClassCastException - if the types of one or more elements in this list are incompatible with the specified collection (optional).
    NullPointerException - if this list contains one or more null elements and the specified collection does not support null elements (optional).
    NullPointerException - if the specified collection is null.
    See Also:
    remove(Object), contains(Object)
    Je confirme que ça marche!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public Query and(Query query1,Query query2){
    	List<Integer> list = query1.getList();
    	list.retainAll(query2.getList()); // enlever valeur si pas dans l'intersection
    	return new QueryImpl(list);
        }
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2002
    Messages : 652
    Points : 1 151
    Points
    1 151
    Par défaut
    addAll ajoute simplement le contenu de liste2 à liste1
    Si tu ne veux pas de doublons, passe par un Set et non un List
    Clic me...
    CV en ligne

    Il y a 10 types de personnes, celui qui connait le binaire, et l'autre...

    Pas de réponse en MP...Merci

  5. #5
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Query or(Query query1,Query query2){
      List<Integer> list = query1.getList();
      list.removeAll(query2); // suppression de l'intersection (pour éviter les doublons)
      list.addAll(query2.getList()); // ajout du tout (sans les doublons)
      return new QueryImpl(list);
    }
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

  6. #6
    Membre habitué
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Points : 174
    Points
    174
    Par défaut
    cela ne n'enlèves pas les doublons...
    ESt-ce que tu as besoin de voir du code pour savoir ce qui ne va pas chez moi?

  7. #7
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Citation Envoyé par Premium
    cela ne n'enlèves pas les doublons...
    Je viens de tester, et ça marche (je l'savais!) : donc c'est sûrement ton implémentation de "equals" et/ou "hashcode" dans la des objets dans tes QUERY qui plante(nt)...

    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
     
    public class Test {
     
        public static void main(String[] args) {
     
            List q1 = new ArrayList();
            q1.add("1");
            q1.add("2");
            q1.add("3");
            q1.add("4");
            System.out.println(q1); // affiche [1, 2, 3, 4]
            List q2 = new ArrayList();
            q2.add("1");
            q2.add("3");
            q2.add("4");
            q2.add("9");
            System.out.println(q2); // affiche [1, 3, 4, 9]
            List list = q1;
            System.out.println(list); // affiche [1, 2, 3, 4]
            list.removeAll(q2);
            System.out.println(list); // affiche [2]
            list.addAll(q2);
            System.out.println(list); // affiche [2, 1, 3, 4, 9]
     
        }
     
    }
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

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

Discussions similaires

  1. problème d'intersect sous mysql
    Par juzii dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/03/2009, 20h24
  2. Problème avec les conditions ''sous-ensemble d'un tableau''
    Par djangossoul dans le forum LabVIEW
    Réponses: 2
    Dernier message: 07/06/2007, 12h23
  3. Problème d'affichage d'un ensemble de DIV sous IE
    Par LeXo dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 28/05/2007, 11h03
  4. Réponses: 9
    Dernier message: 27/04/2006, 15h02
  5. Problèmes avec INTERSECT sur MYSQL
    Par zarbydigital dans le forum Requêtes
    Réponses: 1
    Dernier message: 27/09/2005, 13h18

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