diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/SimpleCache.java b/hutool-core/src/main/java/cn/hutool/core/cache/SimpleCache.java
similarity index 99%
rename from hutool-core/src/main/java/cn/hutool/core/lang/SimpleCache.java
rename to hutool-core/src/main/java/cn/hutool/core/cache/SimpleCache.java
index 5bef6a15f..b1f29de28 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/SimpleCache.java
+++ b/hutool-core/src/main/java/cn/hutool/core/cache/SimpleCache.java
@@ -1,4 +1,4 @@
-package cn.hutool.core.lang;
+package cn.hutool.core.cache;
import cn.hutool.core.collection.TransIter;
import cn.hutool.core.lang.func.Func0;
diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/FilterIter.java b/hutool-core/src/main/java/cn/hutool/core/collection/FilterIter.java
index 9c5ae2201..1d469f2c1 100644
--- a/hutool-core/src/main/java/cn/hutool/core/collection/FilterIter.java
+++ b/hutool-core/src/main/java/cn/hutool/core/collection/FilterIter.java
@@ -1,13 +1,13 @@
package cn.hutool.core.collection;
import cn.hutool.core.lang.Assert;
-import cn.hutool.core.lang.Filter;
import java.util.Iterator;
import java.util.NoSuchElementException;
+import java.util.function.Predicate;
/**
- * 包装 {@link Iterator}并根据{@link Filter}定义,过滤元素输出
+ * 包装 {@link Iterator}并根据{@link Predicate}定义,过滤元素输出
* 类实现来自Apache Commons Collection
*
* @author apache commons, looly
@@ -16,7 +16,7 @@ import java.util.NoSuchElementException;
public class FilterIter implements Iterator {
private final Iterator extends E> iterator;
- private final Filter super E> filter;
+ private final Predicate super E> filter;
/**
* 下一个元素
@@ -33,7 +33,7 @@ public class FilterIter implements Iterator {
* @param iterator 被包装的{@link Iterator}
* @param filter 过滤函数,{@code null}表示不过滤
*/
- public FilterIter(final Iterator extends E> iterator, final Filter super E> filter) {
+ public FilterIter(final Iterator extends E> iterator, final Predicate super E> filter) {
this.iterator = Assert.notNull(iterator);
this.filter = filter;
}
@@ -74,7 +74,7 @@ public class FilterIter implements Iterator {
*
* @return 过滤函数,可能为{@code null}
*/
- public Filter super E> getFilter() {
+ public Predicate super E> getFilter() {
return filter;
}
@@ -84,7 +84,7 @@ public class FilterIter implements Iterator {
private boolean setNextObject() {
while (iterator.hasNext()) {
final E object = iterator.next();
- if (null != filter && filter.accept(object)) {
+ if (null != filter && filter.test(object)) {
nextObject = object;
nextObjectSet = true;
return true;
diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java
index dd0445e65..2bc4a6e82 100644
--- a/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java
@@ -27,6 +27,7 @@ import java.util.Map.Entry;
import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Function;
+import java.util.function.Predicate;
/**
* {@link Iterable} 和 {@link Iterator} 相关工具类
@@ -753,7 +754,7 @@ public class IterUtil {
* @return ArrayList
* @since 5.7.22
*/
- public static List filterToList(Iterator iter, Filter filter) {
+ public static List filterToList(Iterator iter, Predicate filter) {
return toList(filtered(iter, filter));
}
@@ -766,7 +767,7 @@ public class IterUtil {
* @return {@link FilterIter}
* @since 5.8.0
*/
- public static FilterIter filtered(final Iterator extends E> iterator, final Filter super E> filter) {
+ public static FilterIter filtered(final Iterator extends E> iterator, final Predicate super E> filter) {
return new FilterIter<>(iterator, filter);
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/io/file/FileCopier.java b/hutool-core/src/main/java/cn/hutool/core/io/file/FileCopier.java
index 3e7df8220..2d2878e75 100644
--- a/hutool-core/src/main/java/cn/hutool/core/io/file/FileCopier.java
+++ b/hutool-core/src/main/java/cn/hutool/core/io/file/FileCopier.java
@@ -206,7 +206,7 @@ public class FileCopier extends SrcToDestCopier{
* @throws IORuntimeException IO异常
*/
private void internalCopyDirContent(File src, File dest) throws IORuntimeException {
- if (null != copyFilter && false == copyFilter.accept(src)) {
+ if (null != copyPredicate && false == copyPredicate.test(src)) {
//被过滤的目录跳过
return;
}
@@ -249,7 +249,7 @@ public class FileCopier extends SrcToDestCopier{
* @throws IORuntimeException IO异常
*/
private void internalCopyFile(File src, File dest) throws IORuntimeException {
- if (null != copyFilter && false == copyFilter.accept(src)) {
+ if (null != copyPredicate && false == copyPredicate.test(src)) {
//被过滤的文件跳过
return;
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/io/resource/ResourceUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/resource/ResourceUtil.java
index 49b7d90ec..0281af268 100644
--- a/hutool-core/src/main/java/cn/hutool/core/io/resource/ResourceUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/io/resource/ResourceUtil.java
@@ -4,7 +4,6 @@ import cn.hutool.core.collection.EnumerationIter;
import cn.hutool.core.collection.IterUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IORuntimeException;
-import cn.hutool.core.lang.Filter;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ClassLoaderUtil;
import cn.hutool.core.util.StrUtil;
@@ -17,6 +16,7 @@ import java.net.URL;
import java.nio.charset.Charset;
import java.util.Enumeration;
import java.util.List;
+import java.util.function.Predicate;
/**
* Resource资源工具类
@@ -155,7 +155,7 @@ public class ResourceUtil {
* @param filter 过滤器,用于过滤不需要的资源,{@code null}表示不过滤,保留所有元素
* @return 资源列表
*/
- public static List getResources(String resource, Filter filter) {
+ public static List getResources(String resource, Predicate filter) {
return IterUtil.filterToList(getResourceIter(resource), filter);
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/ClassScanner.java b/hutool-core/src/main/java/cn/hutool/core/lang/ClassScanner.java
index 3b65a5d6c..91a2f02e5 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/ClassScanner.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/ClassScanner.java
@@ -16,6 +16,7 @@ import java.nio.charset.Charset;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
+import java.util.function.Predicate;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
@@ -48,7 +49,7 @@ public class ClassScanner implements Serializable {
/**
* 过滤器
*/
- private final Filter> classFilter;
+ private final Predicate> classPredicate;
/**
* 编码
*/
@@ -151,7 +152,7 @@ public class ClassScanner implements Serializable {
* @return 类集合
* @since 5.7.5
*/
- public static Set> scanAllPackage(String packageName, Filter> classFilter) {
+ public static Set> scanAllPackage(String packageName, Predicate> classFilter) {
return new ClassScanner(packageName, classFilter).scan(true);
}
@@ -164,7 +165,7 @@ public class ClassScanner implements Serializable {
* @param classFilter class过滤器,过滤掉不需要的class
* @return 类集合
*/
- public static Set> scanPackage(String packageName, Filter> classFilter) {
+ public static Set> scanPackage(String packageName, Predicate> classFilter) {
return new ClassScanner(packageName, classFilter).scan();
}
@@ -188,26 +189,26 @@ public class ClassScanner implements Serializable {
* 构造,默认UTF-8编码
*
* @param packageName 包名,所有包传入""或者null
- * @param classFilter 过滤器,无需传入null
+ * @param classPredicate 过滤器,无需传入null
*/
- public ClassScanner(String packageName, Filter> classFilter) {
- this(packageName, classFilter, CharsetUtil.CHARSET_UTF_8);
+ public ClassScanner(String packageName, Predicate> classPredicate) {
+ this(packageName, classPredicate, CharsetUtil.CHARSET_UTF_8);
}
/**
* 构造
*
* @param packageName 包名,所有包传入""或者null
- * @param classFilter 过滤器,无需传入null
+ * @param classPredicate 过滤器,无需传入null
* @param charset 编码
*/
- public ClassScanner(String packageName, Filter> classFilter, Charset charset) {
+ public ClassScanner(String packageName, Predicate> classPredicate, Charset charset) {
packageName = StrUtil.nullToEmpty(packageName);
this.packageName = packageName;
this.packageNameWithDot = StrUtil.addSuffixIfNot(packageName, StrUtil.DOT);
this.packageDirName = packageName.replace(CharUtil.DOT, File.separatorChar);
this.packagePath = packageName.replace(CharUtil.DOT, CharUtil.SLASH);
- this.classFilter = classFilter;
+ this.classPredicate = classPredicate;
this.charset = charset;
}
@@ -392,8 +393,8 @@ public class ClassScanner implements Serializable {
*/
private void addIfAccept(Class> clazz) {
if (null != clazz) {
- Filter> classFilter = this.classFilter;
- if (classFilter == null || classFilter.accept(clazz)) {
+ Predicate> classFilter = this.classPredicate;
+ if (classFilter == null || classFilter.test(clazz)) {
this.classes.add(clazz);
}
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/copier/SrcToDestCopier.java b/hutool-core/src/main/java/cn/hutool/core/lang/copier/SrcToDestCopier.java
index 8efd688f8..84f667d54 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/copier/SrcToDestCopier.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/copier/SrcToDestCopier.java
@@ -1,8 +1,7 @@
package cn.hutool.core.lang.copier;
import java.io.Serializable;
-
-import cn.hutool.core.lang.Filter;
+import java.util.function.Predicate;
/**
* 复制器抽象类
@@ -22,7 +21,7 @@ public abstract class SrcToDestCopier> implem
/** 目标 */
protected T dest;
/** 拷贝过滤器,可以过滤掉不需要拷贝的源 */
- protected Filter copyFilter;
+ protected Predicate copyPredicate;
//-------------------------------------------------------------------------------------------------------- Getters and Setters start
/**
@@ -68,18 +67,18 @@ public abstract class SrcToDestCopier> implem
* 获得过滤器
* @return 过滤器
*/
- public Filter getCopyFilter() {
- return copyFilter;
+ public Predicate getCopyPredicate() {
+ return copyPredicate;
}
/**
* 设置过滤器
*
- * @param copyFilter 过滤器
+ * @param copyPredicate 过滤器
* @return this
*/
@SuppressWarnings("unchecked")
- public C setCopyFilter(Filter copyFilter) {
- this.copyFilter = copyFilter;
+ public C setCopyPredicate(Predicate copyPredicate) {
+ this.copyPredicate = copyPredicate;
return (C)this;
}
//-------------------------------------------------------------------------------------------------------- Getters and Setters end
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/generator/ObjectIdGenerator.java b/hutool-core/src/main/java/cn/hutool/core/lang/generator/ObjectIdGenerator.java
index 548825f0a..26484d963 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/generator/ObjectIdGenerator.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/generator/ObjectIdGenerator.java
@@ -1,6 +1,6 @@
package cn.hutool.core.lang.generator;
-import cn.hutool.core.lang.ObjectId;
+import cn.hutool.core.lang.id.ObjectId;
/**
* ObjectId生成器
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/generator/SnowflakeGenerator.java b/hutool-core/src/main/java/cn/hutool/core/lang/generator/SnowflakeGenerator.java
index e348e82e5..a8e46f31b 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/generator/SnowflakeGenerator.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/generator/SnowflakeGenerator.java
@@ -1,6 +1,6 @@
package cn.hutool.core.lang.generator;
-import cn.hutool.core.lang.Snowflake;
+import cn.hutool.core.lang.id.Snowflake;
/**
* Snowflake生成器
diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/ConsistentHash.java b/hutool-core/src/main/java/cn/hutool/core/lang/hash/ConsistentHash.java
similarity index 74%
rename from hutool-core/src/main/java/cn/hutool/core/lang/ConsistentHash.java
rename to hutool-core/src/main/java/cn/hutool/core/lang/hash/ConsistentHash.java
index fee25398b..1ad43ac26 100644
--- a/hutool-core/src/main/java/cn/hutool/core/lang/ConsistentHash.java
+++ b/hutool-core/src/main/java/cn/hutool/core/lang/hash/ConsistentHash.java
@@ -1,7 +1,4 @@
-package cn.hutool.core.lang;
-
-import cn.hutool.core.lang.hash.Hash32;
-import cn.hutool.core.util.HashUtil;
+package cn.hutool.core.lang.hash;
import java.io.Serializable;
import java.util.Collection;
@@ -10,26 +7,33 @@ import java.util.TreeMap;
/**
* 一致性Hash算法
- * 算法详解:http://blog.csdn.net/sparkliang/article/details/5279393
- * 算法实现:https://weblogs.java.net/blog/2007/11/27/consistent-hashing
- * @author xiaoleilu
+ * 算法详解:http://blog.csdn.net/sparkliang/article/details/5279393
+ * 算法实现:https://weblogs.java.net/blog/2007/11/27/consistent-hashing
*
- * @param 节点类型
+ * @param 节点类型
+ * @author xiaoleilu
*/
-public class ConsistentHash implements Serializable{
+public class ConsistentHash implements Serializable {
private static final long serialVersionUID = 1L;
- /** Hash计算对象,用于自定义hash算法 */
+ /**
+ * Hash计算对象,用于自定义hash算法
+ */
Hash32