diff --git a/pom.xml b/pom.xml index 6a4b205..7b8cd4a 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ voucher NO. generator http://github.com/bingoohuang/voucher-no - 1.6 + 1.8 UTF-8 UTF-8 ${java.version} @@ -67,14 +67,14 @@ com.google.truth truth - 0.33 + 0.40 test org.slf4j slf4j-simple - 1.7.25 + 1.8.0-beta2 test @@ -91,7 +91,7 @@ org.apache.maven.plugins maven-source-plugin - 2.2.1 + 3.0.1 attach-sources @@ -105,7 +105,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.9.1 + 3.0.1 attach-javadocs @@ -134,7 +134,7 @@ org.jacoco jacoco-maven-plugin - 0.7.6.201602180812 + 0.8.1 prepare-agent diff --git a/src/main/java/com/github/bingoohuang/voucherno/BloomFilter.java b/src/main/java/com/github/bingoohuang/voucherno/BloomFilter.java index 0aa25ed..55af43e 100644 --- a/src/main/java/com/github/bingoohuang/voucherno/BloomFilter.java +++ b/src/main/java/com/github/bingoohuang/voucherno/BloomFilter.java @@ -65,7 +65,7 @@ public boolean add(String element) { public boolean add(byte[] bytes) { int[] hashes = createHashes(bytes); - return bitSet.set(hashes) > 0; + return bitSet.add(hashes); } /** @@ -91,7 +91,7 @@ public boolean contains(String element) { public boolean contains(byte[] bytes) { int[] hashes = createHashes(bytes); - return bitSet.get(hashes) == 0; + return bitSet.contains(hashes); } private int[] createHashes(byte[] bytes) { diff --git a/src/main/java/com/github/bingoohuang/voucherno/RedisBitSet.java b/src/main/java/com/github/bingoohuang/voucherno/RedisBitSet.java index 5d63667..255f1b8 100644 --- a/src/main/java/com/github/bingoohuang/voucherno/RedisBitSet.java +++ b/src/main/java/com/github/bingoohuang/voucherno/RedisBitSet.java @@ -5,44 +5,26 @@ import redis.clients.jedis.BinaryJedis; import redis.clients.jedis.Protocol; -import java.util.List; +import java.util.Arrays; public class RedisBitSet { - private BinaryJedis jedis; - private byte[] name; + private final BinaryJedis jedis; + private final byte[] name; public RedisBitSet(BinaryJedis jedis, String name) { this.jedis = jedis; this.name = name.getBytes(MessageDigestUtils.UTF8); } - public int set(int[] hashes) { + public boolean add(int[] hashes) { val multi = jedis.multi(); - for (int hash : hashes) { - multi.setbit(name, hash, Protocol.BYTES_TRUE); - } - val result = multi.exec(); - - int oks = 0; - for (val obj : result) { - if (obj == Boolean.FALSE) ++oks; - } - - return oks; + Arrays.stream(hashes).forEach(x -> multi.setbit(name, x, Protocol.BYTES_TRUE)); + return multi.exec().stream().filter(x -> x == Boolean.FALSE).count() > 0; } - public int get(int[] hashes) { + public boolean contains(int[] hashes) { val multi = jedis.multi(); - for (int hash : hashes) { - multi.getbit(name, hash); - } - List result = multi.exec(); - - int falses = 0; - for (val obj : result) { - if (obj == Boolean.FALSE) ++falses; - } - - return falses; + Arrays.stream(hashes).forEach(x -> multi.getbit(name, x)); + return multi.exec().stream().filter(x -> x == Boolean.FALSE).count() == 0; } } \ No newline at end of file