J'utilise la classe BitSet en Java pour traiter un ensemble de bits. Lors de la comparaison de deux BitSet je dois faire une distinction claire entre la notion de sous-ensemble et la notion de intersection.Java BitSet, sous-ensemble vs intersection
Voyons voir un exemple avec l'opérateur pour obtenir le sous-ensemble:
BitSet bits1 = new BitSet();
BitSet bits2 = new BitSet();
bits1.set(0,2,true); //110
bits2.set(1); //010
//010 is a SUBSET of 110
bits1.and(bits2); //bits1 became the result of the and operator
if(bits1.equals(bits2))
{
System.out.println(bits2 + " is a subset of " + bits1);
}
//PRINT
BitSet bits4 = new BitSet();
bits4.set(0,2,true); //110
BitSet bits3 = new BitSet();
bits3.set(1,3,true); //011
bits4.and(bits3);
//011 is NOT a subset of 110
if(bits4.equals(bits3))
{
System.out.println(bits4 + " is a subset of " + bits3);
}
//NO PRINT
Le sous-ensemble est assez clair que j'utilise l'opérateur de vérifier est un BitSet est le sous-ensemble de l'autre.
Le même exemple avec l'opérateur d'intersection intégré:
BitSet bits1 = new BitSet();
BitSet bits2 = new BitSet();
bits1.set(0,2,true); //110
bits2.set(1); //010
//010 intersect 110, but is also a subset of 110
System.out.println("Intersection? " + bits2.intersects(bits1));
BitSet bits3 = new BitSet();
bits3.set(1,3,true); //011
//011 VS 110 intersection only
System.out.println("Intersection? " + bits3.intersects(bits1));
Voilà mon problème: l'intersection de l'opérateur à la fois sous-ensemble et détecter intersection. Mon but est de ne détecter que les intersections à l'exclusion de celles qui sont aussi le sous-ensemble, comme bits1 vs bits2 dans le second exemple. Donc cet opérateur ne convient pas à mon cas car c'est trop général. Existe-t-il un moyen de détecter cette propriété?