@Override public Container iandNot(final BitmapContainer b2) { int newCardinality = 0; for (int k = 0; k < this.bitmap.length; ++k) { newCardinality += Long.bitCount(this.bitmap[k] & (~b2.bitmap[k])); } if (newCardinality > ArrayContainer.DEFAULT_MAX_SIZE) { for (int k = 0; k < this.bitmap.length; ++k) { this.bitmap[k] = this.bitmap[k] & (~b2.bitmap[k]); } this.cardinality = newCardinality; return this; } ArrayContainer ac = new ArrayContainer(newCardinality); Util.fillArrayANDNOT(ac.content, this.bitmap, b2.bitmap); ac.cardinality = newCardinality; return ac; }
@Override public Container andNot(final BitmapContainer value2) { int newCardinality = 0; for (int k = 0; k < this.bitmap.length; ++k) { newCardinality += Long.bitCount(this.bitmap[k] & (~value2.bitmap[k])); } if (newCardinality > ArrayContainer.DEFAULT_MAX_SIZE) { final BitmapContainer answer = new BitmapContainer(); for (int k = 0; k < answer.bitmap.length; ++k) { answer.bitmap[k] = this.bitmap[k] & (~value2.bitmap[k]); } answer.cardinality = newCardinality; return answer; } ArrayContainer ac = new ArrayContainer(newCardinality); Util.fillArrayANDNOT(ac.content, this.bitmap, value2.bitmap); ac.cardinality = newCardinality; return ac; }