Bonjour,
Comment se code l'intersection de 2 ensembles
Merci par avance
Bonjour,
Comment se code l'intersection de 2 ensembles
Merci par avance
Si tu veux l'intersection (éléments en commun) des "clés" de ta Map :
, 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().keySet().retainAll(query2.getMap().keySet());
.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 query1.getMap().entrySet().retainAll(query2.getMap().entrySet());![]()
http://java.sun.com/j2se/1.4.2/docs/...til.Collection)
Je confirme que ça marche!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)
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); }![]()
addAll ajoute simplement le contenu de liste2 à liste1
Si tu ne veux pas de doublons, passe par un Set et non un List
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); }![]()
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?
Partager