private void setHashBuffer(BitArray[] bloomFilters, int[] hashBuffer, SplittableRandom random) { final int hashBufferLength = hashBuffer.length; for (int index = 0; index < hashBufferLength; index++) { final int combinedHash = hashBuffer[index]; final BitArray bloomFilter = bloomFilters[index]; bloomFilter.clear(random.nextLong(bloomFilter.bitSize())); bloomFilter.set(combinedHash % bloomFilter.bitSize()); } }
private void setHashBuffer(BitArray[] bloomFilters, int[] hashBuffer, SplittableRandom random) { final int hashBufferLength = hashBuffer.length; final BitArray randomBloomFilter = bloomFilters[random.nextInt(hashBufferLength)]; randomBloomFilter.clear(random.nextLong(randomBloomFilter.bitSize())); for (int index = 0; index < hashBufferLength; index++) { final int combinedHash = hashBuffer[index]; final BitArray bloomFilter = bloomFilters[index]; bloomFilter.set(combinedHash % bloomFilter.bitSize()); } }
@Test public void testWriteToReadFrom() throws IOException { final BitArray bitArray = new BitArray(64L); assertTrue(bitArray.set(0L)); final ByteArrayOutputStream out = new ByteArrayOutputStream(); final DataOutputStream dos = new DataOutputStream(out); bitArray.writeTo(dos); out.close(); final ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); final DataInputStream dis = new DataInputStream(in); final BitArray serialized = BitArray.readFrom(dis); in.close(); assertEquals(bitArray, serialized); } }
universeBitArray.set(randomNumber);
private void setHashBuffer(BitArray[] bloomFilters, int[] hashBuffer, SplittableRandom random) { final int hashBufferLength = hashBuffer.length; for (int index = 0; index < hashBufferLength; index++) { final int combinedHash = hashBuffer[index]; final BitArray bloomFilter = bloomFilters[index]; final double resetProbability = ((double) bloomFilter.bitCount()) / ((double) bloomFilter.bitSize()); if (random.nextDouble() < resetProbability) { bloomFilter.clear(random.nextLong(bloomFilter.bitSize())); } bloomFilter.set(combinedHash % bloomFilter.bitSize()); } }
@Test public void testGetSetClear() { final BitArray bitArray = new BitArray(64L); assertFalse(bitArray.get(0L)); assertTrue(bitArray.set(0L)); assertTrue(bitArray.get(0L)); assertFalse(bitArray.set(0L)); assertTrue(bitArray.get(0L)); assertTrue(bitArray.clear(0L)); assertFalse(bitArray.get(0L)); assertFalse(bitArray.clear(0L)); assertFalse(bitArray.get(0L)); }
@Test public void testBitCount() { final BitArray bitArray = new BitArray(64L); assertEquals(0L, bitArray.bitCount()); assertTrue(bitArray.set(0L)); assertEquals(1L, bitArray.bitCount()); assertFalse(bitArray.set(0L)); assertEquals(1L, bitArray.bitCount()); assertTrue(bitArray.clear(0L)); assertEquals(0L, bitArray.bitCount()); assertFalse(bitArray.clear(0L)); assertEquals(0L, bitArray.bitCount()); }