diff --git a/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BloomFilter.java b/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BloomFilter.java index e7c9cc9fc..9ab8278b3 100644 --- a/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BloomFilter.java +++ b/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BloomFilter.java @@ -20,10 +20,10 @@ public interface BloomFilter extends Serializable{ /** * 在boolean的bitMap中增加一个字符串
- * 如果存在就返回false .如果不存在.先增加这个字符串.再返回true + * 如果存在就返回{@code false} .如果不存在.先增加这个字符串.再返回{@code true} * * @param str 字符串 - * @return 是否加入成功,如果存在就返回false .如果不存在返回true + * @return 是否加入成功,如果存在就返回{@code false} .如果不存在返回{@code true} */ boolean add(String str); -} \ No newline at end of file +} diff --git a/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java index 3479c17b8..02699d4a4 100644 --- a/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/io/IoUtil.java @@ -684,7 +684,7 @@ public class IoUtil extends NioUtil { * @return 内容 * @throws IORuntimeException IO异常 */ - public static > T readLines(Reader reader, final T collection) throws IORuntimeException { + public static > T readLines(Reader reader, T collection) throws IORuntimeException { readLines(reader, (LineHandler) collection::add); return collection; } diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/CityHash.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/CityHash.java index 61c9f9ba6..aad2da056 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/hash/CityHash.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/CityHash.java @@ -318,7 +318,7 @@ public class CityHash { private static long hashLen0to16(byte[] byteArray) { int len = byteArray.length; if (len >= 8) { - long mul = k2 + len * 2; + long mul = k2 + len * 2L; long a = fetch64(byteArray, 0) + k2; long b = fetch64(byteArray, len - 8); long c = rotate(b, 37) * mul + a; @@ -344,7 +344,7 @@ public class CityHash { // This probably works well for 16-byte strings as well, but it may be overkill in that case. private static long hashLen17to32(byte[] byteArray) { int len = byteArray.length; - long mul = k2 + len * 2; + long mul = k2 + len * 2L; long a = fetch64(byteArray, 0) * k1; long b = fetch64(byteArray, 8); long c = fetch64(byteArray, len - 8) * mul; @@ -355,7 +355,7 @@ public class CityHash { private static long hashLen33to64(byte[] byteArray) { int len = byteArray.length; - long mul = k2 + len * 2; + long mul = k2 + len * 2L; long a = fetch64(byteArray, 0) * k2; long b = fetch64(byteArray, 8); long c = fetch64(byteArray, len - 24); diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash.java new file mode 100644 index 000000000..8ad0a9e35 --- /dev/null +++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash.java @@ -0,0 +1,19 @@ +package cn.hutool.core.lang.hash; + +/** + * Hash计算接口 + * + * @param 被计算hash的对象类型 + * @author looly + * @since 5.7.15 + */ +@FunctionalInterface +public interface Hash { + /** + * 计算Hash值 + * + * @param t 对象 + * @return hash + */ + Number hash(T t); +} diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash128.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash128.java index af5dfc496..b16b4c9ce 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash128.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash128.java @@ -8,7 +8,8 @@ package cn.hutool.core.lang.hash; * @since 5.2.5 */ @FunctionalInterface -public interface Hash128 { +public interface Hash128 extends Hash{ + /** * 计算Hash值 * @@ -16,4 +17,9 @@ public interface Hash128 { * @return hash */ Number128 hash128(T t); -} \ No newline at end of file + + @Override + default Number hash(T t){ + return hash128(t); + } +} diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash32.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash32.java index b0aaa8ced..7a9016697 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash32.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash32.java @@ -8,7 +8,7 @@ package cn.hutool.core.lang.hash; * @since 5.2.5 */ @FunctionalInterface -public interface Hash32 { +public interface Hash32 extends Hash{ /** * 计算Hash值 * @@ -16,4 +16,9 @@ public interface Hash32 { * @return hash */ int hash32(T t); -} \ No newline at end of file + + @Override + default Number hash(T t){ + return hash32(t); + } +} diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash64.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash64.java index 9feac2969..61a50e4bd 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash64.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Hash64.java @@ -8,7 +8,7 @@ package cn.hutool.core.lang.hash; * @since 5.2.5 */ @FunctionalInterface -public interface Hash64 { +public interface Hash64 extends Hash{ /** * 计算Hash值 * @@ -16,4 +16,9 @@ public interface Hash64 { * @return hash */ long hash64(T t); -} \ No newline at end of file + + @Override + default Number hash(T t){ + return hash64(t); + } +} diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Number128.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Number128.java index 9af5bad4d..4f6301095 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/hash/Number128.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/Number128.java @@ -6,7 +6,8 @@ package cn.hutool.core.lang.hash; * @author hexiufeng * @since 5.2.5 */ -public class Number128 { +public class Number128 extends Number{ + private static final long serialVersionUID = 1L; private long lowValue; private long highValue; @@ -41,4 +42,24 @@ public class Number128 { public long[] getLongArray() { return new long[]{lowValue, highValue}; } + + @Override + public int intValue() { + return (int) longValue(); + } + + @Override + public long longValue() { + return this.lowValue; + } + + @Override + public float floatValue() { + return longValue(); + } + + @Override + public double doubleValue() { + return longValue(); + } }