diff --git a/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BitSetBloomFilter.java b/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BitSetBloomFilter.java index 76a10bfdf..044edd16b 100644 --- a/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BitSetBloomFilter.java +++ b/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BitSetBloomFilter.java @@ -66,8 +66,8 @@ public class BitSetBloomFilter implements BloomFilter{ } int[] positions = createHashes(str, hashFunctionNumber); - for (int i = 0; i < positions.length; i++) { - int position = Math.abs(positions[i] % bitSetSize); + for (int value : positions) { + int position = Math.abs(value % bitSetSize); bitSet.set(position, true); } return true; diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java index 9df7e0919..e3110bd4b 100644 --- a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java @@ -1,13 +1,5 @@ package cn.hutool.core.collection; -import java.lang.reflect.Type; -import java.util.*; -import java.util.Map.Entry; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.concurrent.LinkedBlockingDeque; - import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.comparator.PinyinComparator; import cn.hutool.core.comparator.PropertyComparator; @@ -27,6 +19,35 @@ import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.TypeUtil; +import java.lang.reflect.Type; +import java.util.AbstractCollection; +import java.util.AbstractMap; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.Deque; +import java.util.EnumSet; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Objects; +import java.util.Set; +import java.util.Stack; +import java.util.TreeMap; +import java.util.TreeSet; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.LinkedBlockingDeque; + /** * 集合相关工具类 *

diff --git a/hutool-core/src/main/java/cn/hutool/core/convert/Convert.java b/hutool-core/src/main/java/cn/hutool/core/convert/Convert.java index bfc050665..d4770dda7 100644 --- a/hutool-core/src/main/java/cn/hutool/core/convert/Convert.java +++ b/hutool-core/src/main/java/cn/hutool/core/convert/Convert.java @@ -521,6 +521,7 @@ public class Convert { * @param defaultValue 默认值 * @return Enum */ + @SuppressWarnings("unchecked") public static > E toEnum(Class clazz, Object value, E defaultValue) { return (E) (new EnumConverter(clazz)).convertQuietly(value, defaultValue); } diff --git a/hutool-crypto/src/test/java/cn/hutool/crypto/test/DesTest.java b/hutool-crypto/src/test/java/cn/hutool/crypto/test/DesTest.java index f260e6912..649c35d2c 100644 --- a/hutool-crypto/src/test/java/cn/hutool/crypto/test/DesTest.java +++ b/hutool-crypto/src/test/java/cn/hutool/crypto/test/DesTest.java @@ -8,6 +8,9 @@ import cn.hutool.crypto.symmetric.DES; import org.junit.Assert; import org.junit.Test; +/** + * DES加密解密单元测试 + */ public class DesTest { @Test diff --git a/hutool-json/src/test/java/cn/hutool/json/IssueI1AU86Test.java b/hutool-json/src/test/java/cn/hutool/json/IssueI1AU86Test.java new file mode 100644 index 000000000..6f4855650 --- /dev/null +++ b/hutool-json/src/test/java/cn/hutool/json/IssueI1AU86Test.java @@ -0,0 +1,48 @@ +package cn.hutool.json; + +import cn.hutool.core.collection.CollUtil; +import lombok.Data; +import org.junit.Assert; +import org.junit.Test; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 问题反馈解析为null
+ * 此问题出在用户定义了String类型的List,parseArray时,Hutool无法知道这个String是普通值还是JSON字符串
+ * 就算知道也不能盲目解析,否则可能违背用户的初衷。
+ * 因此遇到List中的元素是String的情况下,用户需手动单独parse。 + */ +public class IssueI1AU86Test { + + @Test + public void toListTest() { + List redisList = CollUtil.newArrayList( + "{\"updateDate\":1583376342000,\"code\":\"move\",\"id\":1,\"sort\":1,\"name\":\"电影大全\"}", + "{\"updateDate\":1583378882000,\"code\":\"zy\",\"id\":3,\"sort\":5,\"name\":\"综艺会\"}" + ); + + // 手动parse + final JSONArray jsonArray = new JSONArray(); + for (String str : redisList) { + jsonArray.add(JSONUtil.parse(str)); + } + + final List vccs = jsonArray.toList(Vcc.class); + for (Vcc vcc : vccs) { + Assert.assertNotNull(vcc); + } + } + + @Data + public static class Vcc implements Serializable { + private static final long serialVersionUID = 1L; + private Long id; + private Date updateDate; + private String code; + private String name; + private Integer sort; + } +}