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 5e9703a36..318d25dc5 100644
--- a/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BitSetBloomFilter.java
+++ b/hutool-bloomFilter/src/main/java/cn/hutool/bloomfilter/BitSetBloomFilter.java
@@ -2,19 +2,21 @@ package cn.hutool.bloomfilter;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.HashUtil;
import java.io.BufferedReader;
import java.io.IOException;
+import java.nio.charset.Charset;
import java.util.BitSet;
/**
* BloomFilter实现方式2,此方式使用BitSet存储。
* Hash算法的使用使用固定顺序,只需指定个数即可
- * @author loolly
*
+ * @author loolly
*/
-public class BitSetBloomFilter implements BloomFilter{
+public class BitSetBloomFilter implements BloomFilter {
private static final long serialVersionUID = 1L;
private final BitSet bitSet;
@@ -39,22 +41,36 @@ public class BitSetBloomFilter implements BloomFilter{
/**
* 通过文件初始化过滤器.
*
- * @param path 文件路径
+ * @param path 文件路径
+ * @param charsetName 字符集
+ * @throws IOException IO异常
+ * @deprecated 请使用 {@link #init(String, Charset)}
+ */
+ @Deprecated
+ public void init(String path, String charsetName) throws IOException {
+ init(path, CharsetUtil.charset(charsetName));
+ }
+
+ /**
+ * 通过文件初始化过滤器.
+ *
+ * @param path 文件路径
* @param charset 字符集
* @throws IOException IO异常
+ * @since 5.8.0
*/
- public void init(String path, String charset) throws IOException {
+ public void init(String path, Charset charset) throws IOException {
BufferedReader reader = FileUtil.getReader(path, charset);
try {
String line;
- while(true) {
+ while (true) {
line = reader.readLine();
- if(line == null) {
+ if (line == null) {
break;
}
this.add(line);
}
- }finally {
+ } finally {
IoUtil.close(reader);
}
}
@@ -75,6 +91,7 @@ public class BitSetBloomFilter implements BloomFilter{
/**
* 判定是否包含指定字符串
+ *
* @param str 字符串
* @return 是否包含,存在误差
*/
@@ -101,13 +118,13 @@ public class BitSetBloomFilter implements BloomFilter{
/**
* 将字符串的字节表示进行多哈希编码.
*
- * @param str 待添加进过滤器的字符串字节表示.
+ * @param str 待添加进过滤器的字符串字节表示.
* @param hashNumber 要经过的哈希个数.
* @return 各个哈希的结果数组.
*/
public static int[] createHashes(String str, int hashNumber) {
int[] result = new int[hashNumber];
- for(int i = 0; i < hashNumber; i++) {
+ for (int i = 0; i < hashNumber; i++) {
result[i] = hash(str, i);
}
@@ -116,8 +133,9 @@ public class BitSetBloomFilter implements BloomFilter{
/**
* 计算Hash值
+ *
* @param str 被计算Hash的字符串
- * @param k Hash算法序号
+ * @param k Hash算法序号
* @return Hash值
*/
public static int hash(String str, int k) {
@@ -142,4 +160,4 @@ public class BitSetBloomFilter implements BloomFilter{
return 0;
}
}
-}
\ No newline at end of file
+}
diff --git a/hutool-cron/src/main/java/cn/hutool/cron/pattern/CronPattern.java b/hutool-cron/src/main/java/cn/hutool/cron/pattern/CronPattern.java
index f4c8ff431..384d26497 100644
--- a/hutool-cron/src/main/java/cn/hutool/cron/pattern/CronPattern.java
+++ b/hutool-cron/src/main/java/cn/hutool/cron/pattern/CronPattern.java
@@ -137,7 +137,8 @@ public class CronPattern {
}
/**
- * 返回匹配到的下一个时间
+ * 返回匹配到的下一个时间
+ * TODO 周定义后,结果错误,需改进
*
* @param calendar 时间
* @return 匹配到的下一个时间
diff --git a/hutool-extra/src/main/java/cn/hutool/extra/template/engine/velocity/VelocityTemplate.java b/hutool-extra/src/main/java/cn/hutool/extra/template/engine/velocity/VelocityTemplate.java
index 3c30a7284..9557c70f6 100644
--- a/hutool-extra/src/main/java/cn/hutool/extra/template/engine/velocity/VelocityTemplate.java
+++ b/hutool-extra/src/main/java/cn/hutool/extra/template/engine/velocity/VelocityTemplate.java
@@ -56,7 +56,7 @@ public class VelocityTemplate extends AbstractTemplate implements Serializable {
if(null == charset) {
loadEncoding();
}
- render(bindingMap, IoUtil.getWriter(out, this.charset));
+ render(bindingMap, IoUtil.getWriter(out, CharsetUtil.charset(this.charset)));
}
/**
diff --git a/hutool-json/src/test/java/cn/hutool/json/test/bean/PerfectEvaluationProductResVo.java b/hutool-json/src/test/java/cn/hutool/json/test/bean/PerfectEvaluationProductResVo.java
index e9387976d..e83abbe2e 100644
--- a/hutool-json/src/test/java/cn/hutool/json/test/bean/PerfectEvaluationProductResVo.java
+++ b/hutool-json/src/test/java/cn/hutool/json/test/bean/PerfectEvaluationProductResVo.java
@@ -1,6 +1,7 @@
package cn.hutool.json.test.bean;
import lombok.Data;
+import lombok.EqualsAndHashCode;
import java.util.HashMap;
import java.util.Map;
@@ -10,6 +11,7 @@ import java.util.Map;
* @version 创建时间:2017年9月13日 下午5:16:32
* 类说明
*/
+@EqualsAndHashCode(callSuper = true)
@Data
public class PerfectEvaluationProductResVo extends ProductResBase {
private static final long serialVersionUID = 1L;
diff --git a/hutool-json/src/test/java/cn/hutool/json/xml/XMLTest.java b/hutool-json/src/test/java/cn/hutool/json/xml/XMLTest.java
index 4b9685f00..75bc5bc5c 100644
--- a/hutool-json/src/test/java/cn/hutool/json/xml/XMLTest.java
+++ b/hutool-json/src/test/java/cn/hutool/json/xml/XMLTest.java
@@ -3,9 +3,10 @@ package cn.hutool.json.xml;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.hutool.json.XML;
+import org.hamcrest.CoreMatchers;
+import org.hamcrest.MatcherAssert;
import org.junit.Assert;
import org.junit.Test;
-import org.hamcrest.CoreMatchers;
public class XMLTest {
@@ -15,7 +16,7 @@ public class XMLTest {
.set("aaa", "你好")
.set("键2", "test");
final String s = JSONUtil.toXmlStr(put);
- Assert.assertThat(s, CoreMatchers.anyOf(CoreMatchers.is("你好<键2>test键2>"), CoreMatchers.is("<键2>test键2>你好")));
+ MatcherAssert.assertThat(s, CoreMatchers.anyOf(CoreMatchers.is("你好<键2>test键2>"), CoreMatchers.is("<键2>test键2>你好")));
}
@Test
diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/NullCell.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/NullCell.java
index 87b867bec..35c578976 100644
--- a/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/NullCell.java
+++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/cell/NullCell.java
@@ -58,7 +58,6 @@ public class NullCell implements Cell {
return this.row;
}
- @Override
public void setCellType(CellType cellType) {
throw new UnsupportedOperationException("Can not set any thing to null cell!");
}
diff --git a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/ExcelSaxUtil.java b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/ExcelSaxUtil.java
index f6fdcc217..ff12045ef 100644
--- a/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/ExcelSaxUtil.java
+++ b/hutool-poi/src/main/java/cn/hutool/poi/excel/sax/ExcelSaxUtil.java
@@ -11,8 +11,8 @@ import cn.hutool.poi.excel.sax.handler.RowHandler;
import cn.hutool.poi.exceptions.POIException;
import org.apache.poi.hssf.eventusermodel.FormatTrackingHSSFListener;
import org.apache.poi.hssf.record.CellValueRecordInterface;
-import org.apache.poi.ooxml.util.SAXHelper;
import org.apache.poi.ss.usermodel.DataFormatter;
+import org.apache.poi.util.XMLHelper;
import org.apache.poi.xssf.model.SharedStrings;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.xml.sax.ContentHandler;
@@ -168,9 +168,7 @@ public class ExcelSaxUtil {
public static void readFrom(InputStream xmlDocStream, ContentHandler handler) throws DependencyException, POIException, IORuntimeException {
XMLReader xmlReader;
try {
-// xmlReader = XMLReaderFactory.createXMLReader();
- //noinspection deprecation
- xmlReader = SAXHelper.newXMLReader();
+ xmlReader = XMLHelper.newXMLReader();
} catch (SAXException | ParserConfigurationException e) {
if (e.getMessage().contains("org.apache.xerces.parsers.SAXParser")) {
throw new DependencyException(e, "You need to add 'xerces:xercesImpl' to your project and version >= 2.11.0");