JavaのBitSetクラスを使用してビットセットを処理しています。 2つのBitSetを比較するとき、私はサブセットという概念とという概念の間を明確に区別する必要があります。です。 Javaビットセット、サブセット対交差点
はのサブセットを取得するには、AND演算子での例を見てみましょう:私は確認するために、AND演算子を使用しているため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
サブセットはかなり明確であるのBitSetが別のサブセットです。
内蔵の交差事業者と同じ例:
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));
は、ここに私の問題です:オペレータの交差点は、サブセットと交差の両方を検出します。 私の目標は、サブセットを除いた交差点だけを検出することです.2番目の例ではbits1とbits2のようにします。あまりにも一般的なので、この演算子は私のケースには適していません。 このプロパティを検出する方法はありますか?