Я использую класс BitSet в Java для обработки множества бит. При сравнении двух бит-наборов мне нужно сделать четкое различие между понятием подмножество и понятие пересечение.Java BitSet, подмножество и пересечение
Давайте посмотрим пример с оператором 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));
Вот мой вопрос: оператор пересечения обнаружить как подмножество и пересечение. Моя цель - обнаружить только пересечения, исключая те, которые также являются подмножеством, как бит1 vs bits2 во втором примере. Поэтому этот оператор не подходит для моего случая, потому что он слишком общий. Есть ли способ обнаружить это свойство?