public static BitArray readFrom(DataInputStream in) throws IOException { final int numWords = in.readInt(); long[] data = new long[numWords]; for (int i = 0; i < numWords; i++) { data[i] = in.readLong(); } return new BitArray(data); } // @formatter:on
private static BitArray[] bloomFilters(long numBits, int numHashFunctions) { if (numBits <= 0L) { final String error = String.format("numBits must be positive, but got %d", numBits); throw new IllegalArgumentException(error); } if (numHashFunctions <= 0) { final String error = String.format("numHashFunctions must be positive, but got %d", numHashFunctions); throw new IllegalArgumentException(error); } final long bloomFilterBits = numBits / numHashFunctions; final BitArray[] bloomFilters = new BitArray[numHashFunctions]; for (int index = 0; index < numHashFunctions; index++) { bloomFilters[index] = new BitArray(bloomFilterBits); } return bloomFilters; }
private static BitArray[] bloomFilters(long numBits, int numHashFunctions) { if (numBits <= 0L) { final String error = String.format("numBits must be positive, but got %d", numBits); throw new IllegalArgumentException(error); } if (numHashFunctions <= 0) { final String error = String.format("numHashFunctions must be positive, but got %d", numHashFunctions); throw new IllegalArgumentException(error); } final long bloomFilterBits = numBits / numHashFunctions; final BitArray[] bloomFilters = new BitArray[numHashFunctions]; for (int index = 0; index < numHashFunctions; index++) { bloomFilters[index] = new BitArray(bloomFilterBits); } return bloomFilters; }
private static BitArray[] bloomFilters(long numBits, int numHashFunctions) { if (numBits <= 0L) { final String error = String.format("numBits must be positive, but got %d", numBits); throw new IllegalArgumentException(error); } if (numHashFunctions <= 0) { final String error = String.format("numHashFunctions must be positive, but got %d", numHashFunctions); throw new IllegalArgumentException(error); } final long bloomFilterBits = numBits / numHashFunctions; final BitArray[] bloomFilters = new BitArray[numHashFunctions]; for (int index = 0; index < numHashFunctions; index++) { bloomFilters[index] = new BitArray(bloomFilterBits); } return bloomFilters; }
@Override public void reset() { final int bloomFiltersLength = bloomFilters.length; for (int index = 0; index < bloomFiltersLength; index++) { bloomFilters[index] = new BitArray(bloomFilters[index].bitSize()); } reportedDuplicateProbability = 0D; }
@Override public void reset() { final int bloomFiltersLength = bloomFilters.length; for (int index = 0; index < bloomFiltersLength; index++) { bloomFilters[index] = new BitArray(bloomFilters[index].bitSize()); } reportedDuplicateProbability = 0D; }
@Override public void reset() { final int bloomFiltersLength = bloomFilters.length; for (int index = 0; index < bloomFiltersLength; index++) { bloomFilters[index] = new BitArray(bloomFilters[index].bitSize()); } reportedDuplicateProbability = 0D; }
@Test(expected = IllegalArgumentException.class) public void testNumWordsUpperBound() { new BitArray(64L * Integer.MAX_VALUE + 1L); }
@Test(expected = IllegalArgumentException.class) public void testNumWordsLowerBound() { new BitArray(0L); }
@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); } }
System.out.println(String.format("ProbabilisticDeDuplicator Number of Hash Functions: %d.", NUM_HASH_FUNCTIONS)); final ProbabilisticDeDuplicator deDuplicator = new RLBSBFDeDuplicator(NUM_BITS, NUM_HASH_FUNCTIONS); final BitArray universeBitArray = new BitArray(STREAM_SIZE); final byte[] elementBytes = new byte[LONG_BYTES]; long numFp = 0L;
@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()); }