You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2022/08/23 10:32:17 UTC
[commons-collections] 01/03: COLLECTIONS-831: Add BloomFilter clear() method
This is an automated email from the ASF dual-hosted git repository.
aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-collections.git
commit 5a31023eae4bf2bd621fa8613699f54842109402
Author: Claude Warren, Jr <cl...@aiven.io>
AuthorDate: Tue Aug 23 11:27:24 2022 +0100
COLLECTIONS-831: Add BloomFilter clear() method
---
.../collections4/bloomfilter/ArrayCountingBloomFilter.java | 6 ++++++
.../org/apache/commons/collections4/bloomfilter/BloomFilter.java | 5 +++++
.../commons/collections4/bloomfilter/SimpleBloomFilter.java | 6 ++++++
.../commons/collections4/bloomfilter/SparseBloomFilter.java | 5 +++++
.../collections4/bloomfilter/AbstractBloomFilterTest.java | 9 +++++++++
.../commons/collections4/bloomfilter/DefaultBloomFilterTest.java | 5 +++++
6 files changed, 36 insertions(+)
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/ArrayCountingBloomFilter.java b/src/main/java/org/apache/commons/collections4/bloomfilter/ArrayCountingBloomFilter.java
index 4202f6d86..ba13e6645 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/ArrayCountingBloomFilter.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/ArrayCountingBloomFilter.java
@@ -16,6 +16,7 @@
*/
package org.apache.commons.collections4.bloomfilter;
+import java.util.Arrays;
import java.util.Objects;
import java.util.function.IntPredicate;
import java.util.function.LongPredicate;
@@ -104,6 +105,11 @@ public final class ArrayCountingBloomFilter implements CountingBloomFilter {
this.counts = source.counts.clone();
}
+ @Override
+ public void clear() {
+ Arrays.fill(counts, 0);
+ }
+
@Override
public ArrayCountingBloomFilter copy() {
return new ArrayCountingBloomFilter(this);
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilter.java b/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilter.java
index 58ed6bcb5..9471e5dcd 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilter.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilter.java
@@ -60,6 +60,11 @@ public interface BloomFilter extends IndexProducer, BitMapProducer {
*/
Shape getShape();
+ /**
+ * Resets the filter to its initial, unpopulated state.
+ */
+ void clear();
+
/**
* Returns {@code true} if this filter contains the specified filter.
*
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/SimpleBloomFilter.java b/src/main/java/org/apache/commons/collections4/bloomfilter/SimpleBloomFilter.java
index c351f40c1..eb777f726 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/SimpleBloomFilter.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/SimpleBloomFilter.java
@@ -117,6 +117,12 @@ public final class SimpleBloomFilter implements BloomFilter {
this.cardinality = source.cardinality;
}
+ @Override
+ public void clear() {
+ Arrays.fill(bitMap, 0L);
+ cardinality = 0;
+ }
+
@Override
public long[] asBitMapArray() {
return Arrays.copyOf(bitMap, bitMap.length);
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/SparseBloomFilter.java b/src/main/java/org/apache/commons/collections4/bloomfilter/SparseBloomFilter.java
index 9cfa034eb..f5670ce1c 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/SparseBloomFilter.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/SparseBloomFilter.java
@@ -174,6 +174,11 @@ public final class SparseBloomFilter implements BloomFilter {
return true;
}
+ @Override
+ public void clear() {
+ indices.clear();
+ }
+
@Override
public Shape getShape() {
return shape;
diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/AbstractBloomFilterTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/AbstractBloomFilterTest.java
index d8ceea079..a61885491 100644
--- a/src/test/java/org/apache/commons/collections4/bloomfilter/AbstractBloomFilterTest.java
+++ b/src/test/java/org/apache/commons/collections4/bloomfilter/AbstractBloomFilterTest.java
@@ -18,6 +18,7 @@ package org.apache.commons.collections4.bloomfilter;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -178,6 +179,14 @@ public abstract class AbstractBloomFilterTest<T extends BloomFilter> {
assertTrue(bf4.contains(bf1));
}
+ @Test
+ public void testClear() {
+ BloomFilter bf1 = createFilter(getTestShape(), from1);
+ assertNotEquals(0, bf1.cardinality());
+ bf1.clear();
+ assertEquals(0, bf1.cardinality());
+ }
+
/**
* Tests that the andCardinality calculations are correct.
*
diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/DefaultBloomFilterTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/DefaultBloomFilterTest.java
index ff258ae80..ea7bd25f6 100644
--- a/src/test/java/org/apache/commons/collections4/bloomfilter/DefaultBloomFilterTest.java
+++ b/src/test/java/org/apache/commons/collections4/bloomfilter/DefaultBloomFilterTest.java
@@ -112,6 +112,11 @@ public class DefaultBloomFilterTest extends AbstractBloomFilterTest<DefaultBloom
}
}
+ @Override
+ public void clear() {
+ indices.clear();
+ }
+
@Override
public boolean forEachIndex(IntPredicate consumer) {
for (Integer i : indices) {