mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
fix code
This commit is contained in:
parent
6c57694599
commit
59d264048f
@ -13,7 +13,7 @@
|
||||
package cn.hutool.core.annotation;
|
||||
|
||||
import cn.hutool.core.map.WeakConcurrentMap;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
|
@ -23,7 +23,7 @@ import cn.hutool.core.reflect.FieldUtil;
|
||||
import cn.hutool.core.reflect.MethodUtil;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
|
@ -16,7 +16,7 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.reflect.ClassUtil;
|
||||
import cn.hutool.core.reflect.MethodUtil;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.AnnotatedElement;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.core.annotation;
|
||||
|
||||
import cn.hutool.core.stream.EasyStream;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
|
@ -17,7 +17,7 @@ import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.map.WeakConcurrentMap;
|
||||
import cn.hutool.core.reflect.MethodUtil;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.annotation.Repeatable;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.core.annotation;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.AnnotatedElement;
|
||||
|
@ -18,7 +18,7 @@ import cn.hutool.core.map.multi.Graph;
|
||||
import cn.hutool.core.reflect.ClassUtil;
|
||||
import cn.hutool.core.reflect.MethodUtil;
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Method;
|
||||
|
@ -10,7 +10,7 @@
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
package cn.hutool.core.util;
|
||||
package cn.hutool.core.array;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.collection.SetUtil;
|
||||
@ -23,6 +23,8 @@ import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.text.StrJoiner;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.nio.ByteBuffer;
|
507
hutool-core/src/main/java/cn/hutool/core/array/ArrayWrapper.java
Executable file
507
hutool-core/src/main/java/cn/hutool/core/array/ArrayWrapper.java
Executable file
@ -0,0 +1,507 @@
|
||||
package cn.hutool.core.array;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.lang.func.Wrapper;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.UnaryOperator;
|
||||
|
||||
/**
|
||||
* 数组包装,提供一系列数组方法
|
||||
*
|
||||
* @param <A> 数组类型
|
||||
* @author looly
|
||||
* @since 6.0.0
|
||||
*/
|
||||
public class ArrayWrapper<A> implements Wrapper<A> {
|
||||
|
||||
private final Class<?> componentType;
|
||||
private A array;
|
||||
private int length;
|
||||
|
||||
/**
|
||||
* 创建ArrayWrapper
|
||||
*
|
||||
* @param componentType 元素类型
|
||||
* @param length 长度
|
||||
* @param <A> 数组类型
|
||||
* @return ArrayWrapper
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <A> ArrayWrapper<A> of(final Class<?> componentType, final int length) {
|
||||
return (ArrayWrapper<A>) of(Array.newInstance(componentType, length));
|
||||
}
|
||||
|
||||
/**
|
||||
* 包装数组为ArrayWrapper
|
||||
*
|
||||
* @param array 数组
|
||||
* @param <A> 数组类型
|
||||
* @return ArrayWrapper
|
||||
*/
|
||||
public static <A> ArrayWrapper<A> of(final A array) {
|
||||
return new ArrayWrapper<>(array);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造
|
||||
*
|
||||
* @param array 数组对象
|
||||
*/
|
||||
public ArrayWrapper(final A array) {
|
||||
Assert.notNull(array);
|
||||
if (ArrayUtil.isArray(array)) {
|
||||
throw new IllegalArgumentException("Object is not a array!");
|
||||
}
|
||||
this.componentType = array.getClass().getComponentType();
|
||||
setNewArray(array);
|
||||
}
|
||||
|
||||
@Override
|
||||
public A getRaw() {
|
||||
return this.array;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数组长度
|
||||
*
|
||||
* @return 数组长度
|
||||
*/
|
||||
public int length() {
|
||||
return length;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否原始类型数组
|
||||
*
|
||||
* @return 是否原始类型数组
|
||||
*/
|
||||
public boolean isPrimitive() {
|
||||
return this.componentType.isPrimitive();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数组对象的元素类型,方法调用参数与返回结果举例:
|
||||
* <ul>
|
||||
* <li>Object[] =》 Object.class</li>
|
||||
* <li>String[] =》 String.class</li>
|
||||
* <li>int[] =》 int.class</li>
|
||||
* <li>Integer[] =》 Integer.class</li>
|
||||
* <li>null =》 null</li>
|
||||
* <li>String =》 null</li>
|
||||
* </ul>
|
||||
*
|
||||
* @return 元素类型
|
||||
*/
|
||||
public Class<?> getComponentType() {
|
||||
return this.componentType;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得数组类型
|
||||
*
|
||||
* @return 数组类型
|
||||
*/
|
||||
public Class<?> getArrayType() {
|
||||
return array.getClass();
|
||||
}
|
||||
|
||||
/**
|
||||
* 数组是否为空
|
||||
*
|
||||
* @return 是否为空
|
||||
*/
|
||||
public boolean isEmpty() {
|
||||
return 0 == length;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数组对象中指定index的值,支持负数,例如-1表示倒数第一个值<br>
|
||||
* 如果数组下标越界,返回null
|
||||
*
|
||||
* @param <E> 数组元素类型
|
||||
* @param index 下标,支持负数,-1表示最后一个元素
|
||||
* @return 值
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public <E> E get(int index) {
|
||||
final int length = this.length;
|
||||
if (index < 0) {
|
||||
index += length;
|
||||
}
|
||||
if (index < 0 || index >= length) {
|
||||
return null;
|
||||
}
|
||||
return (E) Array.get(array, index);
|
||||
}
|
||||
|
||||
// region ----- index
|
||||
|
||||
/**
|
||||
* 返回数组中第一个非空元素
|
||||
*
|
||||
* @param <E> 数组元素类型
|
||||
* @return 第一个非空元素,如果 不存在非空元素 或 数组为空,返回{@code null}
|
||||
*/
|
||||
public <E> E firstNonNull() {
|
||||
return firstMatch(ObjUtil::isNotNull);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回数组中第一个匹配规则的值
|
||||
*
|
||||
* @param <E> 元素类型
|
||||
* @param matcher 匹配接口,实现此接口自定义匹配规则
|
||||
* @return 第一个匹配元素,如果 不存在匹配元素 或 数组为空,返回 {@code null}
|
||||
*/
|
||||
public <E> E firstMatch(final Predicate<?> matcher) {
|
||||
final int index = matchIndex(matcher);
|
||||
if (index == ArrayUtil.INDEX_NOT_FOUND) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return get(index);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回数组中指定元素所在位置,未找到返回{@link ArrayUtil#INDEX_NOT_FOUND}
|
||||
*
|
||||
* @param value 被检查的元素
|
||||
* @return 数组中指定元素所在位置,未找到返回{@link ArrayUtil#INDEX_NOT_FOUND}
|
||||
*/
|
||||
public int indexOf(final Object value) {
|
||||
return matchIndex((obj) -> ObjUtil.equals(value, obj));
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回数组中第一个匹配规则的值的位置
|
||||
*
|
||||
* @param matcher 匹配接口,实现此接口自定义匹配规则
|
||||
* @return 第一个匹配元素的位置,{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到
|
||||
*/
|
||||
public int matchIndex(final Predicate<?> matcher) {
|
||||
return matchIndex(0, matcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回数组中指定元素所在位置,未找到返回{@link ArrayUtil#INDEX_NOT_FOUND}
|
||||
*
|
||||
* @param value 被检查的元素
|
||||
* @param offset 开始的位置
|
||||
* @return 数组中指定元素所在位置,未找到返回{@link ArrayUtil#INDEX_NOT_FOUND}
|
||||
*/
|
||||
public int indexOf(final Object value, final int offset) {
|
||||
return matchIndex(offset, (obj) -> ObjUtil.equals(value, obj));
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回数组中第一个匹配规则的值的位置
|
||||
*
|
||||
* @param matcher 匹配接口,实现此接口自定义匹配规则
|
||||
* @param offset 检索开始的位置,不能为负数
|
||||
* @return 第一个匹配元素的位置,{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到
|
||||
*/
|
||||
public int matchIndex(final int offset, final Predicate<?> matcher) {
|
||||
if (null == matcher && offset < this.length) {
|
||||
return offset;
|
||||
}
|
||||
for (int i = offset; i < length; i++) {
|
||||
if (matcher.test(get(i))) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return ArrayUtil.INDEX_NOT_FOUND;
|
||||
}
|
||||
// endregion
|
||||
|
||||
// region ----- last index
|
||||
|
||||
/**
|
||||
* 返回数组中指定最后的所在位置,未找到返回{@link ArrayUtil#INDEX_NOT_FOUND}
|
||||
*
|
||||
* @param value 被检查的元素
|
||||
* @return 数组中指定元素最后的所在位置,未找到返回{@link ArrayUtil#INDEX_NOT_FOUND}
|
||||
*/
|
||||
public int lastIndexOf(final Object value) {
|
||||
return matchLastIndex((obj) -> ObjUtil.equals(value, obj));
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回数组中最后一个匹配规则的值的位置(从后向前查找)
|
||||
*
|
||||
* @param matcher 匹配接口,实现此接口自定义匹配规则
|
||||
* @return 最后一个匹配元素的位置,{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到
|
||||
*/
|
||||
public int matchLastIndex(final Predicate<?> matcher) {
|
||||
return matchLastIndex(length - 1, matcher);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回数组中最后一个匹配规则的值的位置(从后向前查找)
|
||||
*
|
||||
* @param matcher 匹配接口,实现此接口自定义匹配规则
|
||||
* @param offset 从后向前查找时的起始位置,一般为{@code array.length - 1}
|
||||
* @return 最后一个匹配元素的位置,{@link ArrayUtil#INDEX_NOT_FOUND}表示未匹配到
|
||||
*/
|
||||
public int matchLastIndex(final int offset, final Predicate<?> matcher) {
|
||||
if (null == matcher && offset >= 0) {
|
||||
return offset;
|
||||
}
|
||||
for (int i = Math.min(offset, length - 1); i >= 0; i--) {
|
||||
if (matcher.test(get(i))) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return ArrayUtil.INDEX_NOT_FOUND;
|
||||
}
|
||||
// endregion
|
||||
|
||||
/**
|
||||
* 将元素值设置为数组的某个位置,当给定的index大于等于数组长度,则追加
|
||||
*
|
||||
* @param index 位置,大于等于长度则追加,否则替换
|
||||
* @param value 新元素或新数组
|
||||
* @return this
|
||||
*/
|
||||
public ArrayWrapper<A> setOrAppend(final int index, final Object value) {
|
||||
if (index < this.length) {
|
||||
Array.set(array, index, value);
|
||||
} else {
|
||||
append(value);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将新元素添加到已有数组中<br>
|
||||
* 添加新元素会生成一个新的数组,不影响原数组
|
||||
*
|
||||
* @param newElements 新元素或新数组
|
||||
* @return 新数组
|
||||
*/
|
||||
public ArrayWrapper<A> append(final Object newElements) {
|
||||
return insert(this.length, newElements);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将新元素插入到已有数组中的某个位置
|
||||
* 如果插入位置为负数,从原数组从后向前计数,若大于原数组长度,则空白处用默认值填充<br>
|
||||
*
|
||||
* @param index 插入位置,支持负数。此位置为对应此位置元素之前的空档
|
||||
* @param arrayToAppend 新元素
|
||||
* @return 新数组
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "SuspiciousSystemArraycopy"})
|
||||
public ArrayWrapper<A> insert(int index, Object arrayToAppend) {
|
||||
if (false == ArrayUtil.isArray(arrayToAppend)) {
|
||||
// 用户传入单个元素则创建单元素数组
|
||||
if (arrayToAppend.getClass() == this.componentType) {
|
||||
arrayToAppend = createSingleElementArray(arrayToAppend);
|
||||
}
|
||||
}
|
||||
|
||||
final int appendLength = ArrayUtil.length(arrayToAppend);
|
||||
if (0 == appendLength) {
|
||||
return this;
|
||||
}
|
||||
if (isEmpty()) {
|
||||
setNewArray((A) Convert.convert(array.getClass(), arrayToAppend));
|
||||
}
|
||||
|
||||
final int len = this.length;
|
||||
if (index < 0) {
|
||||
index = (index % len) + len;
|
||||
}
|
||||
|
||||
// 已有数组的元素类型
|
||||
// 如果 已有数组的元素类型是 原始类型,则需要转换 新元素数组 为该类型,避免ArrayStoreException
|
||||
if (this.componentType.isPrimitive()) {
|
||||
arrayToAppend = Convert.convert(array.getClass(), arrayToAppend);
|
||||
}
|
||||
|
||||
final A result = (A) Array.newInstance(this.componentType, Math.max(len, index) + appendLength);
|
||||
// 原数组到index位置
|
||||
System.arraycopy(array, 0, result, 0, Math.min(len, index));
|
||||
// 新增的数组追加
|
||||
System.arraycopy(arrayToAppend, 0, result, index, appendLength);
|
||||
if (index < len) {
|
||||
// 原数组剩余部分
|
||||
System.arraycopy(array, index, result, index + appendLength, len - index);
|
||||
}
|
||||
setNewArray(result);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从数组中的指定位置开始,按顺序使用新元素替换旧元素<br>
|
||||
* <ul>
|
||||
* <li>如果 指定位置 为负数,那么生成一个新数组,其中新元素按顺序放在数组头部</li>
|
||||
* <li>如果 指定位置 大于等于 旧数组长度,那么生成一个新数组,其中新元素按顺序放在数组尾部</li>
|
||||
* <li>如果 指定位置 加上 新元素数量 大于 旧数组长度,那么生成一个新数组,指定位置之前是旧数组元素,指定位置及之后为新元素</li>
|
||||
* <li>否则,从已有数组中的指定位置开始,按顺序使用新元素替换旧元素,返回旧数组</li>
|
||||
* </ul>
|
||||
*
|
||||
* @param index 位置
|
||||
* @param values 新值
|
||||
* @return this
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "SuspiciousSystemArraycopy"})
|
||||
public ArrayWrapper<A> replace(final int index, Object values) {
|
||||
if (false == ArrayUtil.isArray(values)) {
|
||||
// 用户传入单个元素则创建单元素数组
|
||||
if (values.getClass() == this.componentType) {
|
||||
values = createSingleElementArray(values);
|
||||
}
|
||||
}
|
||||
|
||||
final int valuesLength = ArrayUtil.length(values);
|
||||
if (0 == valuesLength) {
|
||||
return this;
|
||||
}
|
||||
if (isEmpty()) {
|
||||
setNewArray((A) Convert.convert(array.getClass(), values));
|
||||
}
|
||||
if (index < 0) {
|
||||
// 从头部追加
|
||||
return insert(0, values);
|
||||
}
|
||||
if (index >= length) {
|
||||
// 超出长度,尾部追加
|
||||
return append(values);
|
||||
}
|
||||
|
||||
// 在原数组范围内
|
||||
if (length >= valuesLength + index) {
|
||||
System.arraycopy(values, 0, this.array, index, valuesLength);
|
||||
return this;
|
||||
}
|
||||
|
||||
// 超出范围,替换长度大于原数组长度,新建数组
|
||||
final A result = (A) Array.newInstance(this.componentType, index + valuesLength);
|
||||
System.arraycopy(this.array, 0, result, 0, index);
|
||||
System.arraycopy(values, 0, result, index, valuesLength);
|
||||
setNewArray(result);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对每个数组元素执行指定操作,替换元素为修改后的元素
|
||||
*
|
||||
* @param editor 编辑器接口,为 {@code null}则返回原数组
|
||||
* @return this
|
||||
*/
|
||||
public ArrayWrapper<A> edit(final UnaryOperator<?> editor) {
|
||||
if (null == array || null == editor) {
|
||||
return this;
|
||||
}
|
||||
|
||||
for (int i = 0; i < length; i++) {
|
||||
setOrAppend(i, editor.apply(get(i)));
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子数组
|
||||
*
|
||||
* @param begin 开始位置(包括)
|
||||
* @param end 结束位置(不包括)
|
||||
* @return 新的数组
|
||||
* @see Arrays#copyOfRange(Object[], int, int)
|
||||
* @since 4.2.2
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "SuspiciousSystemArraycopy"})
|
||||
public A getSub(int begin, int end) {
|
||||
final int length = this.length;
|
||||
if (begin < 0) {
|
||||
begin += length;
|
||||
}
|
||||
if (end < 0) {
|
||||
end += length;
|
||||
}
|
||||
if (begin > end) {
|
||||
final int tmp = begin;
|
||||
begin = end;
|
||||
end = tmp;
|
||||
}
|
||||
if (begin >= length) {
|
||||
return (A) Array.newInstance(this.componentType, 0);
|
||||
}
|
||||
if (end > length) {
|
||||
end = length;
|
||||
}
|
||||
|
||||
final A result = (A) Array.newInstance(this.componentType, end - begin);
|
||||
System.arraycopy(this.array, begin, result, 0, end - begin);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
final A array = this.array;
|
||||
if (null == array) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (array instanceof long[]) {
|
||||
return Arrays.toString((long[]) array);
|
||||
} else if (array instanceof int[]) {
|
||||
return Arrays.toString((int[]) array);
|
||||
} else if (array instanceof short[]) {
|
||||
return Arrays.toString((short[]) array);
|
||||
} else if (array instanceof char[]) {
|
||||
return Arrays.toString((char[]) array);
|
||||
} else if (array instanceof byte[]) {
|
||||
return Arrays.toString((byte[]) array);
|
||||
} else if (array instanceof boolean[]) {
|
||||
return Arrays.toString((boolean[]) array);
|
||||
} else if (array instanceof float[]) {
|
||||
return Arrays.toString((float[]) array);
|
||||
} else if (array instanceof double[]) {
|
||||
return Arrays.toString((double[]) array);
|
||||
} else if (ArrayUtil.isArray(array)) {
|
||||
// 对象数组
|
||||
try {
|
||||
return Arrays.deepToString((Object[]) array);
|
||||
} catch (final Exception ignore) {
|
||||
//ignore
|
||||
}
|
||||
}
|
||||
|
||||
return array.toString();
|
||||
}
|
||||
|
||||
// region ----- private methods
|
||||
/**
|
||||
* 设置新数组,并更新长度
|
||||
*
|
||||
* @param newArray 数组
|
||||
*/
|
||||
private void setNewArray(final A newArray) {
|
||||
this.array = newArray;
|
||||
this.length = Array.getLength(newArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建单一元素数组
|
||||
*
|
||||
* @param value 元素值
|
||||
* @return 数组
|
||||
*/
|
||||
private Object createSingleElementArray(final Object value) {
|
||||
// 插入单个元素
|
||||
final Object newInstance = Array.newInstance(this.componentType, 1);
|
||||
Array.set(newInstance, 1, value);
|
||||
return newInstance;
|
||||
}
|
||||
// endregion
|
||||
}
|
@ -10,9 +10,11 @@
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
package cn.hutool.core.util;
|
||||
package cn.hutool.core.array;
|
||||
|
||||
import cn.hutool.core.math.NumberUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.Arrays;
|
||||
@ -3195,12 +3197,7 @@ public class PrimitiveArrayUtil {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int i = 0; i < prefix.length; i++) {
|
||||
if (array[i] != prefix[i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return isSubEquals(array, 0, prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3395,46 +3392,52 @@ public class PrimitiveArrayUtil {
|
||||
/**
|
||||
* 是否局部匹配,相当于对比以下子串是否相等
|
||||
* <pre>
|
||||
* byte1[offset1, byte2.length]
|
||||
* array1[offset1, subArray.length]
|
||||
* ||
|
||||
* byte2
|
||||
* subArray
|
||||
* </pre>
|
||||
*
|
||||
* @param bytes1 第一个数组
|
||||
* @param offset 开始位置
|
||||
* @param bytes2 第二个数组
|
||||
* @param array 数组
|
||||
* @param offset 开始位置
|
||||
* @param subArray 子数组
|
||||
* @return 是否局部匹配
|
||||
*/
|
||||
public static boolean isSubEquals(final byte[] bytes1, final int offset, final byte[] bytes2) {
|
||||
return regionMatches(bytes1, offset, bytes2, 0, bytes2.length);
|
||||
public static boolean isSubEquals(final byte[] array, final int offset, final byte[] subArray) {
|
||||
if (array == subArray) {
|
||||
return true;
|
||||
}
|
||||
if (array.length < subArray.length) {
|
||||
return false;
|
||||
}
|
||||
return regionMatches(array, offset, subArray, 0, subArray.length);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否局部匹配,相当于对比以下子串是否相等
|
||||
* <pre>
|
||||
* byte1[offset1, offset1 + length]
|
||||
* array1[offset1 : offset1 + length]
|
||||
* ||
|
||||
* byte2[offset2, offset2 + length]
|
||||
* array2[offset2 : offset2 + length]
|
||||
* </pre>
|
||||
*
|
||||
* @param bytes1 第一个数组
|
||||
* @param array1 第一个数组
|
||||
* @param offset1 第一个数组开始位置
|
||||
* @param bytes2 第二个数组
|
||||
* @param array2 第二个数组
|
||||
* @param offset2 第二个数组开始位置
|
||||
* @param length 检查长度
|
||||
* @return 是否局部匹配
|
||||
*/
|
||||
public static boolean regionMatches(final byte[] bytes1, final int offset1,
|
||||
final byte[] bytes2, final int offset2, final int length) {
|
||||
if(bytes1.length < offset1 + length){
|
||||
public static boolean regionMatches(final byte[] array1, final int offset1,
|
||||
final byte[] array2, final int offset2, final int length) {
|
||||
if (array1.length < offset1 + length) {
|
||||
throw new IndexOutOfBoundsException("[byte1] length must be >= [offset1 + length]");
|
||||
}
|
||||
if(bytes2.length < offset2 + length){
|
||||
if (array2.length < offset2 + length) {
|
||||
throw new IndexOutOfBoundsException("[byte2] length must be >= [offset2 + length]");
|
||||
}
|
||||
|
||||
for (int i = 0; i < length; i++) {
|
||||
if (bytes1[i + offset1] != bytes2[i + offset2]) {
|
||||
if (array1[i + offset1] != array2[i + offset2]) {
|
||||
return false;
|
||||
}
|
||||
}
|
18
hutool-core/src/main/java/cn/hutool/core/array/package-info.java
Executable file
18
hutool-core/src/main/java/cn/hutool/core/array/package-info.java
Executable file
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright (c) 2023 looly(loolly@aliyun.com)
|
||||
* Hutool is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 提供数组相关封装
|
||||
*
|
||||
* @author looly
|
||||
*/
|
||||
package cn.hutool.core.array;
|
@ -19,7 +19,7 @@ import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.math.NumberUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.text.split.SplitUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
@ -27,7 +27,7 @@ import cn.hutool.core.reflect.ConstructorUtil;
|
||||
import cn.hutool.core.reflect.FieldUtil;
|
||||
import cn.hutool.core.reflect.ModifierUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
import java.beans.BeanInfo;
|
||||
|
@ -17,7 +17,7 @@ import cn.hutool.core.convert.Converter;
|
||||
import cn.hutool.core.lang.func.LambdaUtil;
|
||||
import cn.hutool.core.lang.func.SerFunction;
|
||||
import cn.hutool.core.lang.mutable.MutableEntry;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Field;
|
||||
|
@ -16,7 +16,7 @@ import cn.hutool.core.codec.binary.Base16Codec;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.text.CharPool;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.core.codec.binary;
|
||||
|
||||
import cn.hutool.core.codec.Decoder;
|
||||
import cn.hutool.core.codec.Encoder;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.Serializable;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.core.codec.binary;
|
||||
|
||||
import cn.hutool.core.codec.Decoder;
|
||||
import cn.hutool.core.lang.mutable.MutableInt;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
/**
|
||||
* Base64解码实现<br>
|
||||
|
@ -32,7 +32,7 @@ import cn.hutool.core.reflect.TypeUtil;
|
||||
import cn.hutool.core.stream.StreamUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.text.split.SplitUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.core.collection;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
@ -21,7 +21,7 @@ import cn.hutool.core.comparator.PinyinComparator;
|
||||
import cn.hutool.core.comparator.PropertyComparator;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.lang.page.PageInfo;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
import java.util.*;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.core.collection;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.core.collection.iter;
|
||||
|
||||
import cn.hutool.core.lang.Chain;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
@ -18,7 +18,7 @@ import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.reflect.FieldUtil;
|
||||
import cn.hutool.core.reflect.MethodUtil;
|
||||
import cn.hutool.core.text.StrJoiner;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.core.comparator;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.Objects;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.core.comparator;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
|
@ -16,7 +16,7 @@ import cn.hutool.core.io.file.FileUtil;
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.io.resource.Resource;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
|
||||
import java.io.Closeable;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.core.convert;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.reflect.TypeUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.core.convert;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.math.NumberUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
|
@ -19,7 +19,7 @@ import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.io.SerializeUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.text.split.SplitUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ByteUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.core.date;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.core.date;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.time.format.TextStyle;
|
||||
import java.util.Calendar;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.core.date;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.time.DayOfWeek;
|
||||
import java.util.Calendar;
|
||||
|
@ -16,7 +16,7 @@ import cn.hutool.core.io.stream.FastByteArrayOutputStream;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.reflect.ConstructorUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
|
||||
import java.io.PrintStream;
|
||||
|
@ -1,7 +1,7 @@
|
||||
package cn.hutool.core.io;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.core.io;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.io.file.FileUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.core.io.file;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
|
||||
import java.math.BigInteger;
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
package cn.hutool.core.io.file;
|
||||
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.compress.ZipUtil;
|
||||
import cn.hutool.core.io.BomReader;
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
|
@ -12,11 +12,8 @@
|
||||
|
||||
package cn.hutool.core.io.stream;
|
||||
|
||||
import cn.hutool.core.codec.HexUtil;
|
||||
import cn.hutool.core.io.ByteOrderMark;
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.core.io.watch;
|
||||
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.lang.func.SerBiConsumer;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.io.Closeable;
|
||||
import java.io.IOException;
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.core.lang;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
import java.util.Map;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.core.lang;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
|
||||
|
@ -17,7 +17,7 @@ import cn.hutool.core.lang.func.SerSupplier;
|
||||
import cn.hutool.core.map.SafeConcurrentHashMap;
|
||||
import cn.hutool.core.reflect.ConstructorUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.core.lang;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.collection.iter.ArrayIter;
|
||||
import cn.hutool.core.exceptions.CloneRuntimeException;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Arrays;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.core.lang.caller;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
/**
|
||||
* {@link SecurityManager} 方式获取调用者
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.core.map;
|
||||
|
||||
import cn.hutool.core.text.StrJoiner;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
@ -16,7 +16,7 @@ import cn.hutool.core.classloader.ClassLoaderUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.getter.TypeGetter;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.BooleanUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
@ -19,7 +19,7 @@ import cn.hutool.core.collection.iter.IterUtil;
|
||||
import cn.hutool.core.exceptions.UtilException;
|
||||
import cn.hutool.core.reflect.ConstructorUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
import java.util.AbstractMap;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.core.map.multi;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.*;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.core.math;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.core.math;
|
||||
import cn.hutool.core.comparator.CompareUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.core.net.ssl;
|
||||
|
||||
import cn.hutool.core.lang.builder.Builder;
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
|
||||
import javax.net.ssl.KeyManager;
|
||||
|
@ -22,7 +22,7 @@ import cn.hutool.core.net.url.URLDecoder;
|
||||
import cn.hutool.core.net.url.URLUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.text.split.SplitUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.core.reflect;
|
||||
import cn.hutool.core.exceptions.UtilException;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.map.WeakConcurrentMap;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.lang.reflect.Constructor;
|
||||
|
@ -19,7 +19,7 @@ import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.map.WeakConcurrentMap;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.HashMap;
|
||||
|
@ -23,7 +23,7 @@ import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.lang.Singleton;
|
||||
import cn.hutool.core.map.WeakConcurrentMap;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.core.reflect;
|
||||
|
||||
import cn.hutool.core.exceptions.UtilException;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Member;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.core.reflect;
|
||||
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.core.reflect;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.core.stream;
|
||||
|
||||
import cn.hutool.core.lang.Opt;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.*;
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.core.stream;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Opt;
|
||||
import cn.hutool.core.math.NumberUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.core.stream;
|
||||
import cn.hutool.core.lang.Opt;
|
||||
import cn.hutool.core.lang.mutable.MutableInt;
|
||||
import cn.hutool.core.lang.mutable.MutableObj;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.*;
|
||||
|
@ -19,7 +19,7 @@ import cn.hutool.core.lang.mutable.MutableInt;
|
||||
import cn.hutool.core.lang.mutable.MutableObj;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.map.SafeConcurrentHashMap;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
package cn.hutool.core.text;
|
||||
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.comparator.VersionComparator;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.core.text;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.core.text;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
|
||||
import java.util.Map;
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.core.text;
|
||||
import cn.hutool.core.collection.iter.ArrayIter;
|
||||
import cn.hutool.core.collection.iter.IterUtil;
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.core.text;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
|
||||
import java.io.StringReader;
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.core.tree;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.collection.SetUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.iter.IterUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.date.DateField;
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.exceptions.UtilException;
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
|
@ -1,6 +1,6 @@
|
||||
package cn.hutool.core.annotation;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import lombok.SneakyThrows;
|
||||
import org.junit.Assert;
|
||||
|
@ -3,7 +3,7 @@ package cn.hutool.core.bean;
|
||||
import cn.hutool.core.lang.test.bean.ExamInfoDict;
|
||||
import cn.hutool.core.lang.test.bean.UserInfoDict;
|
||||
import cn.hutool.core.map.Dict;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import lombok.Data;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
|
@ -9,7 +9,7 @@ import cn.hutool.core.map.MapBuilder;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.thread.ThreadUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
|
@ -3,7 +3,7 @@ package cn.hutool.core.collection;
|
||||
import cn.hutool.core.collection.iter.LineIter;
|
||||
import cn.hutool.core.collection.iter.PartitionIter;
|
||||
import cn.hutool.core.io.resource.ResourceUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -4,7 +4,7 @@ import cn.hutool.core.date.StopWatch;
|
||||
import cn.hutool.core.lang.Console;
|
||||
import cn.hutool.core.lang.test.bean.ExamInfoDict;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.SystemUtil;
|
||||
import lombok.Data;
|
||||
import org.junit.Assert;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.cron.pattern;
|
||||
import cn.hutool.core.lang.builder.Builder;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.text.StrJoiner;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
|
||||
/**
|
||||
|
@ -16,7 +16,7 @@ import cn.hutool.core.codec.binary.Base64;
|
||||
import cn.hutool.core.io.file.FileUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.crypto;
|
||||
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.crypto.asymmetric.SM2;
|
||||
import cn.hutool.crypto.digest.HMac;
|
||||
import cn.hutool.crypto.digest.HmacAlgorithm;
|
||||
|
@ -16,7 +16,7 @@ import cn.hutool.core.codec.HexUtil;
|
||||
import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.io.file.FileUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ByteUtil;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
import cn.hutool.crypto.CryptoException;
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.crypto.symmetric;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.crypto.KeyUtil;
|
||||
import cn.hutool.crypto.Mode;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.crypto.symmetric;
|
||||
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.crypto.KeyUtil;
|
||||
import cn.hutool.crypto.Mode;
|
||||
import cn.hutool.crypto.Padding;
|
||||
|
@ -16,7 +16,7 @@ import cn.hutool.core.io.IORuntimeException;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.lang.Opt;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.codec.HexUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
|
@ -3,7 +3,7 @@ package cn.hutool.crypto.asymmetric;
|
||||
import cn.hutool.core.codec.HexUtil;
|
||||
import cn.hutool.core.codec.binary.Base64;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.ByteUtil;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
|
@ -16,7 +16,7 @@ import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.db.dialect.Dialect;
|
||||
import cn.hutool.db.dialect.DialectFactory;
|
||||
import cn.hutool.db.handler.NumberHandler;
|
||||
|
@ -18,7 +18,7 @@ import cn.hutool.core.lang.func.SerSupplier;
|
||||
import cn.hutool.core.map.Dict;
|
||||
import cn.hutool.core.reflect.MethodUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.db.sql.SqlUtil;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.db;
|
||||
|
||||
import cn.hutool.core.lang.Segment;
|
||||
import cn.hutool.core.lang.page.PageInfo;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.db.sql.Order;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
@ -17,7 +17,7 @@ import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.db.handler.ResultSetUtil;
|
||||
import cn.hutool.db.handler.RsHandler;
|
||||
import cn.hutool.db.sql.NamedSql;
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.db.dialect.impl;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.db.DbRuntimeException;
|
||||
import cn.hutool.db.Entity;
|
||||
import cn.hutool.db.Page;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.db.dialect.impl;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.db.Entity;
|
||||
import cn.hutool.db.Page;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.db.dialect.impl;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.db.Entity;
|
||||
import cn.hutool.db.StatementUtil;
|
||||
|
@ -20,7 +20,7 @@ import cn.hutool.core.reflect.ConstructorUtil;
|
||||
import cn.hutool.core.reflect.MethodUtil;
|
||||
import cn.hutool.core.reflect.TypeUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.db.DbRuntimeException;
|
||||
import cn.hutool.db.Entity;
|
||||
|
||||
|
@ -17,7 +17,7 @@ import cn.hutool.core.exceptions.CloneRuntimeException;
|
||||
import cn.hutool.core.math.NumberUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.text.split.SplitUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.db.sql;
|
||||
|
||||
import cn.hutool.core.lang.builder.Builder;
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.util.CharUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
package cn.hutool.db.sql;
|
||||
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -14,7 +14,7 @@ package cn.hutool.db.sql;
|
||||
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedList;
|
||||
|
@ -13,7 +13,7 @@
|
||||
package cn.hutool.db.sql;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.db.DbRuntimeException;
|
||||
import cn.hutool.db.Entity;
|
||||
import cn.hutool.db.Page;
|
||||
|
@ -15,7 +15,7 @@ package cn.hutool.db.sql;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.text.split.SplitUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.array.ArrayUtil;
|
||||
import cn.hutool.db.Entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user