public class ArrayUtil extends PrimitiveArrayUtil
INDEX_NOT_FOUND
Constructor and Description |
---|
ArrayUtil() |
Modifier and Type | Method and Description |
---|---|
static <T> T[] |
addAll(T[]... arrays)
合并所有数组,返回合并后的新数组
忽略null的数组 |
static <A,T> A |
append(A array,
T... newElements)
将新元素添加到已有数组中
添加新元素会生成一个新的数组,不影响原数组 |
static <T> T[] |
append(T[] buffer,
T... newElements)
将新元素添加到已有数组中
添加新元素会生成一个新的数组,不影响原数组 |
static Object[] |
cast(Class<?> type,
Object arrayObj)
强转数组类型
强制转换的前提是数组元素类型可被强制转换 强制转换后会生成一个新数组 |
static <A> A |
castOrWrapSingle(Object values,
Class<?> elementType)
转为数组,如果values为数组,返回,否则返回一个只有values一个元素的数组
注意:values的元素类型或其本身类型必须和提供的elementType完全一致 |
static <T> T |
clone(T obj)
克隆数组,如果非数组返回
null |
static <T> T[] |
clone(T[] array)
克隆数组
|
static <T> boolean |
contains(T[] array,
T value)
数组中是否包含指定元素
|
static <T> boolean |
containsAll(T[] array,
T... values)
数组中是否包含所有指定元素
|
static <T> boolean |
containsAny(T[] array,
T... values)
数组中是否包含指定元素中的任意一个
|
static boolean |
containsIgnoreCase(CharSequence[] array,
CharSequence value)
数组中是否包含元素,忽略大小写
|
static <T> T |
copy(Object src,
int srcPos,
T dest,
int destPos,
int length)
|
static <T> T |
copy(Object src,
T dest)
|
static <T> T |
copy(Object src,
T dest,
int length)
|
static <T> T[] |
defaultIfEmpty(T[] array,
T[] defaultArray)
如果给定数组为空,返回默认数组
|
static <T> T[] |
distinct(T[] array)
去重数组中的元素,去重后生成新的数组,原数组不变
此方法通过 LinkedHashSet 去重 |
static <T,K> T[] |
distinct(T[] array,
Function<T,K> uniqueGenerator,
boolean override)
去重数组中的元素,去重后生成新的数组,原数组不变
此方法通过 LinkedHashSet 去重 |
static <T> T[] |
edit(T[] array,
UnaryOperator<T> editor)
对每个数组元素执行指定操作,返回操作后的元素
这个Editor实现可以实现以下功能: 过滤出需要的对象,如果返回 null 则抛弃这个元素对象
修改元素对象,返回修改后的对象
|
static int |
emptyCount(Object... args)
计算
null 或空元素对象的个数,通过ObjUtil.isEmpty(Object) 判断元素 |
static boolean |
equals(Object array1,
Object array2)
判断两个数组是否相等,判断依据包括数组长度和每个元素都相等。
|
static <T> T[] |
filter(T[] array,
Predicate<T> predicate)
|
static <T> T |
firstMatch(Predicate<T> matcher,
T... array)
返回数组中第一个匹配规则的值
|
static <T> T |
firstNonNull(T... array)
返回数组中第一个非空元素
|
static <E> E |
get(E[] array,
Predicate<E> predicate)
获取满足条件的第一个元素
|
static <E> E |
get(Object array,
int index)
获取数组对象中指定index的值,支持负数,例如-1表示倒数第一个值
如果数组下标越界,返回null |
static <T> T[] |
getAny(Object array,
int... indexes)
获取数组中所有指定位置的元素值,组成新数组
|
static Class<?> |
getArrayType(Class<?> componentType)
根据数组元素类型,获取数组的类型
方法是通过创建一个空数组从而获取其类型 本方法是 getComponentType(Class) 的逆方法 |
static Class<?> |
getComponentType(Class<?> arrayClass)
获取数组对象的元素类型,方法调用参数与返回结果举例:
Object[].class =》 Object.class
String[].class =》 String.class
int[].class =》 int.class
Integer[].class =》 Integer.class
null =》 null
String.class =》 null
|
static Class<?> |
getComponentType(Object array)
获取数组对象的元素类型,方法调用参数与返回结果举例:
Object[] =》 Object.class
String[] =》 String.class
int[] =》 int.class
Integer[] =》 Integer.class
null =》 null
String =》 null
|
static boolean |
hasBlank(CharSequence... strs)
指定字符串数组中,是否包含空字符串。
|
static <T> boolean |
hasEmpty(T[] args)
|
static <T> boolean |
hasEmptyVarargs(T... args)
|
static <T> boolean |
hasNonNull(T... array)
是否包含非
null 元素如果数组是 null 或者空,返回false ,否则当数组中有非null 元素时返回true |
static <T> boolean |
hasNull(T... array)
是否包含
null 元素
如果数组为null,则返回true ,如果数组为空,则返回false |
static <T> Boolean |
hasSameElement(T[] array)
判断数组中是否有相同元素
若传入空数组,则返回
false |
static <T> int |
indexOf(T[] array,
Object value)
返回数组中指定元素所在位置,未找到返回
PrimitiveArrayUtil.INDEX_NOT_FOUND |
static <T> int |
indexOf(T[] array,
Object value,
int beginIndexInclude)
返回数组中指定元素所在位置,未找到返回
PrimitiveArrayUtil.INDEX_NOT_FOUND |
static int |
indexOfIgnoreCase(CharSequence[] array,
CharSequence value)
返回数组中指定元素所在位置,忽略大小写,未找到返回
PrimitiveArrayUtil.INDEX_NOT_FOUND |
static <T> int |
indexOfSub(T[] array,
int beginInclude,
T[] subArray)
查找子数组的位置
|
static <T> int |
indexOfSub(T[] array,
T[] subArray)
查找子数组的位置
|
static <A,E> A |
insert(A array,
int index,
E... newElements)
将新元素插入到已有数组中的某个位置
添加新元素会生成一个新的数组,不影响原数组 如果插入位置为负数,从原数组从后向前计数,若大于原数组长度,则空白处用默认值填充 |
static <T> T[] |
insert(T[] buffer,
int index,
T... newElements)
将新元素插入到已有数组中的某个位置
添加新元素会生成一个新的数组,不影响原数组 如果插入位置为负数,从原数组从后向前计数,若大于原数组长度,则空白处用null填充 |
static boolean |
isAllBlank(CharSequence... strs)
指定字符串数组中的元素,是否全部为空字符串。
|
static <T> boolean |
isAllEmpty(T[] args)
|
static <T> boolean |
isAllEmptyVarargs(T... args)
|
static boolean |
isAllNotBlank(CharSequence... args)
是否存都不为
null 或空对象或空白符的对象,通过hasBlank(CharSequence...) |
static boolean |
isAllNotEmpty(Object... args)
|
static <T> boolean |
isAllNotNull(T... array)
是否所有元素都不为
null
如果提供的数组为null,则返回false ,如果提供的数组为空,则返回true |
static <T> boolean |
isAllNull(T... array)
所有字段是否全为null
如果数组为
null 或者空,则返回 true |
static boolean |
isArray(Object obj)
对象是否为数组对象
|
static boolean |
isEmpty(Object array)
数组是否为空
此方法会匹配单一对象,如果此对象为 null 则返回true如果此对象为非数组,理解为此对象为数组的第一个元素,则返回false 如果此对象为数组对象,数组长度大于0的情况下返回false,否则返回true |
static <T> boolean |
isEmpty(T[] array)
数组是否为空
|
static boolean |
isNotEmpty(Object array)
数组是否为非空
此方法会匹配单一对象,如果此对象为 null 则返回false如果此对象为非数组,理解为此对象为数组的第一个元素,则返回true 如果此对象为数组对象,数组长度大于0的情况下返回true,否则返回false |
static <T> boolean |
isNotEmpty(T[] array)
数组是否为非空
|
static <T extends Comparable<? super T>> |
isSorted(T[] array)
检查数组是否有序,升序或者降序
若传入空数组,则返回
false ;元素全部相等,返回 true |
static <T> boolean |
isSorted(T[] array,
Comparator<? super T> comparator)
检查数组是否有序,升序或者降序,使用指定比较器比较
若传入空数组或空比较器,则返回
false ;元素全部相等,返回 true |
static <T extends Comparable<? super T>> |
isSortedASC(T[] array)
检查数组是否升序,即
array[i].compareTo(array[i + 1]) <= 0
若传入空数组,则返回false |
static <T> boolean |
isSortedASC(T[] array,
Comparator<? super T> comparator)
检查数组是否升序,使用指定的比较器比较,即
comparator.compare(array[i], array[i + 1]) <= 0
若传入空数组或空比较器,则返回false |
static <T extends Comparable<? super T>> |
isSortedDESC(T[] array)
检查数组是否降序,即
array[i].compareTo(array[i + 1]) >= 0
若传入空数组,则返回false |
static <T> boolean |
isSortedDESC(T[] array,
Comparator<? super T> comparator)
检查数组是否降序,使用指定的比较器比较,即
comparator.compare(array[i], array[i + 1]) >= 0
若传入空数组或空比较器,则返回false |
static <T> boolean |
isSub(T[] array,
T[] subArray)
是否是数组的子数组
|
static String |
join(Object array,
CharSequence conjunction)
以 conjunction 为分隔符将数组转换为字符串
|
static <T> String |
join(T[] array,
CharSequence conjunction)
以 conjunction 为分隔符将数组转换为字符串
|
static <T> String |
join(T[] array,
CharSequence delimiter,
String prefix,
String suffix)
以 conjunction 为分隔符将数组转换为字符串
|
static <T> String |
join(T[] array,
CharSequence conjunction,
UnaryOperator<T> editor)
先处理数组元素,再以 conjunction 为分隔符将数组转换为字符串
|
static <T> int |
lastIndexOf(T[] array,
Object value)
返回数组中指定元素最后的所在位置,未找到返回
PrimitiveArrayUtil.INDEX_NOT_FOUND |
static <T> int |
lastIndexOf(T[] array,
Object value,
int endInclude)
返回数组中指定元素最后的所在位置,未找到返回
PrimitiveArrayUtil.INDEX_NOT_FOUND |
static <T> int |
lastIndexOfSub(T[] array,
int endInclude,
T[] subArray)
查找最后一个子数组的开始位置
|
static <T> int |
lastIndexOfSub(T[] array,
T[] subArray)
查找最后一个子数组的开始位置
|
static int |
length(Object array)
获取数组长度
如果参数为 null ,返回0
ArrayUtil.length(null) = 0
ArrayUtil.length([]) = 0
ArrayUtil.length([null]) = 1
ArrayUtil.length([true, false]) = 2
ArrayUtil.length([1, 2, 3]) = 3
ArrayUtil.length(["a", "b", "c"]) = 3
|
static <R> R[] |
map(Object array,
Class<R> targetComponentType,
Function<?,? extends R> func)
按照指定规则,将一种类型的数组转换为另一种类型
|
static <T,R> R[] |
mapToArray(T[] array,
Function<? super T,? extends R> func,
IntFunction<R[]> generator)
按照指定规则,将一种类型的数组元素转换为另一种类型,并保存为数组
|
static <T,R> List<R> |
mapToList(T[] array,
Function<? super T,? extends R> func)
按照指定规则,将一种类型的数组元素转换为另一种类型,并保存为
List |
static <T,R> Set<R> |
mapToSet(T[] array,
Function<? super T,? extends R> func)
按照指定规则,将一种类型的数组元素转换为另一种类型,并保存为
Set |
static <E> int |
matchIndex(int beginIndexInclude,
Predicate<E> matcher,
E... array)
返回数组中第一个匹配规则的值的位置
|
static <T> int |
matchIndex(Predicate<T> matcher,
T... array)
返回数组中第一个匹配规则的值的位置
|
static <T extends Comparable<? super T>> |
max(T[] numberArray)
取最大值
|
static <T extends Comparable<? super T>> |
max(T[] numberArray,
Comparator<T> comparator)
取最大值
|
static <T extends Comparable<? super T>> |
min(T[] numberArray)
取最小值
|
static <T extends Comparable<? super T>> |
min(T[] numberArray,
Comparator<T> comparator)
取最小值
|
static <T> T[] |
newArray(Class<?> componentType,
int newSize)
新建一个空数组
|
static Object[] |
newArray(int newSize)
新建一个
Object 类型空数组 |
static String[] |
nullToEmpty(String[] array)
数组元素中的null转换为""
|
static <T> T[] |
ofArray(Iterable<T> iterable,
Class<T> componentType)
将集合转为数组,如果集合为
null ,则返回空的数组(元素个数为0) |
static <T> T[] |
remove(T[] array,
int index)
移除数组中对应位置的元素
copy from commons-lang |
static <T extends CharSequence> |
removeBlank(T[] array)
去除
null 或者""或者空白字符串 元素 |
static <T> T[] |
removeEle(T[] array,
T element)
移除数组中指定的元素
只会移除匹配到的第一个元素 copy from commons-lang |
static <T extends CharSequence> |
removeEmpty(T[] array)
去除
null 或者"" 元素 |
static <T> T[] |
removeNull(T[] array)
去除
null 元素 |
static <A> A |
replace(A array,
int index,
A values)
从数组中的指定位置开始,按顺序使用新元素替换旧元素
如果 指定位置 为负数,那么生成一个新数组,其中新元素按顺序放在数组头部 如果 指定位置 大于等于 旧数组长度,那么生成一个新数组,其中新元素按顺序放在数组尾部 如果 指定位置 加上 新元素数量 大于 旧数组长度,那么生成一个新数组,指定位置之前是旧数组元素,指定位置及之后为新元素 否则,从已有数组中的指定位置开始,按顺序使用新元素替换旧元素,返回旧数组 |
static <T> T[] |
replace(T[] array,
int index,
T... values)
从数组中的指定位置开始,按顺序使用新元素替换旧元素
如果 指定位置 为负数,那么生成一个新数组,其中新元素按顺序放在数组头部 如果 指定位置 大于等于 旧数组长度,那么生成一个新数组,其中新元素按顺序放在数组尾部 如果 指定位置 加上 新元素数量 大于 旧数组长度,那么生成一个新数组,指定位置之前是旧数组元素,指定位置及之后为新元素 否则,从已有数组中的指定位置开始,按顺序使用新元素替换旧元素,返回旧数组 |
static Object |
resize(Object array,
int newSize)
生成一个新的重新设置大小的数组
调整大小后,按顺序拷贝原数组到新数组中,新长度更小则截断 |
static <T> T[] |
resize(T[] buffer,
int newSize)
生成一个新的重新设置大小的数组
调整大小后,按顺序拷贝原数组到新数组中,新长度更小则截断原数组 |
static <T> T[] |
resize(T[] data,
int newSize,
Class<?> componentType)
生成一个新的重新设置大小的数组
调整大小后,按顺序拷贝原数组到新数组中,新长度更小则截断 |
static <T> T[] |
reverse(T[] array)
反转数组,会变更原数组
|
static <T> T[] |
reverse(T[] array,
int startIndexInclusive,
int endIndexExclusive)
反转数组,会变更原数组
|
static <A> A |
setOrAppend(A array,
int index,
Object value)
将元素值设置为数组的某个位置,当给定的index大于等于数组长度,则追加
|
static <T> T[] |
setOrAppend(T[] array,
int index,
T value)
将元素值设置为数组的某个位置,当给定的index大于等于数组长度,则追加
|
static <A,E> A |
setOrPadding(A array,
int index,
E value,
E paddingValue)
将元素值设置为数组的某个位置,当index小于数组的长度时,替换指定位置的值,否则追加paddingValue直到到达index后,设置值
|
static <A> A |
setOrPadding(A array,
int index,
Object value)
将元素值设置为数组的某个位置,当index小于数组的长度时,替换指定位置的值,否则追加
null 或0 直到到达index后,设置值 |
static <T> T[] |
shuffle(T[] array)
打乱数组顺序,会变更原数组
使用Fisher–Yates洗牌算法,以线性时间复杂度打乱数组顺序 |
static <T> T[] |
shuffle(T[] array,
Random random)
打乱数组顺序,会变更原数组
使用Fisher–Yates洗牌算法,以线性时间复杂度打乱数组顺序 |
static <T> boolean |
startWith(T[] array,
T[] prefix)
array数组是否以prefix开头,每个元素的匹配使用
ObjUtil.equals(Object, Object) 匹配。 |
static <A> A |
sub(A array,
int beginInclude,
int endExclude)
获取子数组
|
static <A> A |
sub(A array,
int beginInclude,
int endExclude,
int step)
获取子数组
|
static <T> T[] |
sub(T[] array,
int start,
int end)
获取子数组
|
static Object |
swap(Object array,
int index1,
int index2)
交换数组中两个位置的值
|
static <T> T[] |
swap(T[] array,
int index1,
int index2)
交换数组中两个位置的值
|
static String |
toString(Object obj)
数组或集合转String
|
static Object[] |
wrap(Object obj)
包装数组对象
|
static <A> A |
wrapSingle(Object value,
Class<?> elementType)
包装单一元素为数组
|
static <K,V> Map<K,V> |
zip(K[] keys,
V[] values)
映射键值(参考Python的zip()函数),返回Map无序
例如: keys = [a,b,c,d] values = [1,2,3,4] 则得到的Map是 {a=1, b=2, c=3, d=4} 如果两个数组长度不同,则只对应最短部分 |
static <K,V> Map<K,V> |
zip(K[] keys,
V[] values,
boolean isOrder)
映射键值(参考Python的zip()函数)
例如: keys = [a,b,c,d] values = [1,2,3,4] 则得到的Map是 {a=1, b=2, c=3, d=4} 如果两个数组长度不同,则只对应最短部分 |
addAll, addAll, addAll, addAll, addAll, addAll, addAll, addAll, contains, contains, contains, contains, contains, contains, contains, contains, indexOf, indexOf, indexOf, indexOf, indexOf, indexOf, indexOf, indexOf, isEmpty, isEmpty, isEmpty, isEmpty, isEmpty, isEmpty, isEmpty, isEmpty, isNotEmpty, isNotEmpty, isNotEmpty, isNotEmpty, isNotEmpty, isNotEmpty, isNotEmpty, isNotEmpty, isSortedASC, isSortedASC, isSortedASC, isSortedASC, isSortedASC, isSortedASC, isSortedASC, isSortedDESC, isSortedDESC, isSortedDESC, isSortedDESC, isSortedDESC, isSortedDESC, isSortedDESC, isSubEquals, lastIndexOf, lastIndexOf, lastIndexOf, lastIndexOf, lastIndexOf, lastIndexOf, lastIndexOf, lastIndexOf, max, max, max, max, max, max, max, min, min, min, min, min, min, min, regionMatches, remove, remove, remove, remove, remove, remove, remove, remove, remove, removeEle, removeEle, removeEle, removeEle, removeEle, removeEle, removeEle, removeEle, resize, reverse, reverse, reverse, reverse, reverse, reverse, reverse, reverse, reverse, reverse, reverse, reverse, reverse, reverse, reverse, reverse, shuffle, shuffle, shuffle, shuffle, shuffle, shuffle, shuffle, shuffle, shuffle, shuffle, shuffle, shuffle, shuffle, shuffle, shuffle, shuffle, split, startWith, startWith, startWith, startWith, startWith, startWith, startWith, startWith, swap, swap, swap, swap, swap, swap, swap, swap, unWrap, unWrap, unWrap, unWrap, unWrap, unWrap, unWrap, unWrap, wrap, wrap, wrap, wrap, wrap, wrap, wrap, wrap
public static <A> A castOrWrapSingle(Object values, Class<?> elementType)
A
- 数组类型values
- 元素值elementType
- 数组元素类型,null
表示使用values的类型public static <A> A wrapSingle(Object value, Class<?> elementType)
A
- 数组类型value
- 元素值elementType
- 数组元素类型,null
表示使用value的类型public static <T> T[] ofArray(Iterable<T> iterable, Class<T> componentType)
null
,则返回空的数组(元素个数为0)T
- 数组元素类型iterable
- Iterable
componentType
- 集合元素类型public static boolean hasBlank(CharSequence... strs)
指定字符串数组中,是否包含空字符串。
如果指定的字符串数组的长度为 0,或者其中的任意一个元素是空字符串,则返回 true。
例:
hasBlank() // true
hasBlank("", null, " ") // true
hasBlank("123", " ") // true
hasBlank("123", "abc") // false
注意:该方法与 isAllBlank(CharSequence...)
的区别在于:
isBlank(...) || isBlank(...) || ...
isAllBlank(CharSequence...)
等价于 isBlank(...) && isBlank(...) && ...
strs
- 字符串列表public static boolean isAllNotBlank(CharSequence... args)
null
或空对象或空白符的对象,通过hasBlank(CharSequence...)
判断元素args
- 被检查的对象,一个或者多个public static boolean isAllBlank(CharSequence... strs)
指定字符串数组中的元素,是否全部为空字符串。
如果指定的字符串数组的长度为 0,或者所有元素都是空字符串,则返回 true。
例:
isAllBlank() // true
isAllBlank("", null, " ") // true
isAllBlank("123", " ") // false
isAllBlank("123", "abc") // false
注意:该方法与 hasBlank(CharSequence...)
的区别在于:
hasBlank(CharSequence...)
等价于 isBlank(...) || isBlank(...) || ...
isBlank(...) && isBlank(...) && ...
strs
- 字符串列表public static <T> boolean isEmpty(T[] array)
T
- 数组元素类型array
- 数组public static <T> T[] defaultIfEmpty(T[] array, T[] defaultArray)
T
- 数组元素类型array
- 数组defaultArray
- 默认数组public static boolean isEmpty(Object array)
null
则返回truearray
- 数组public static <T> boolean isNotEmpty(T[] array)
T
- 数组元素类型array
- 数组public static boolean isNotEmpty(Object array)
null
则返回falsearray
- 数组public static int emptyCount(Object... args)
null
或空元素对象的个数,通过ObjUtil.isEmpty(Object)
判断元素args
- 被检查的对象,一个或者多个null
或空元素对象的个数public static <T> boolean hasEmpty(T[] args)
T
- 元素类型args
- 被检查对象null
或空对象@SafeVarargs public static <T> boolean hasEmptyVarargs(T... args)
T
- 元素类型args
- 被检查对象null
或空对象IllegalArgumentException
- 如果提供的args的item存在数组或集合,抛出异常public static <T> boolean isAllEmpty(T[] args)
T
- 元素类型args
- 被检查的对象,一个或者多个@SafeVarargs public static <T> boolean isAllEmptyVarargs(T... args)
T
- 元素类型args
- 被检查的对象,一个或者多个IllegalArgumentException
- 如果提供的args的item存在数组或集合,抛出异常public static boolean isAllNotEmpty(Object... args)
args
- 被检查的对象,一个或者多个public static <T> boolean hasNull(T... array)
null
元素
如果数组为null,则返回true
,如果数组为空,则返回false
T
- 数组元素类型array
- 被检查的数组null
元素public static <T> boolean isAllNull(T... array)
如果数组为null
或者空,则返回 true
T
- 数组元素类型array
- 被检查的数组public static <T> boolean isAllNotNull(T... array)
null
如果提供的数组为null,则返回false
,如果提供的数组为空,则返回true
T
- 数组元素类型array
- 被检查的数组null
public static <T> boolean hasNonNull(T... array)
null
元素如果数组是null
或者空,返回false
,否则当数组中有非null
元素时返回true
T
- 数组元素类型array
- 被检查的数组null
元素public static <T> T firstNonNull(T... array)
T
- 数组元素类型array
- 数组null
public static <T> T firstMatch(Predicate<T> matcher, T... array)
T
- 数组元素类型matcher
- 匹配接口,实现此接口自定义匹配规则array
- 数组null
public static <T> int matchIndex(Predicate<T> matcher, T... array)
T
- 数组元素类型matcher
- 匹配接口,实现此接口自定义匹配规则array
- 数组PrimitiveArrayUtil.INDEX_NOT_FOUND
表示未匹配到public static <E> int matchIndex(int beginIndexInclude, Predicate<E> matcher, E... array)
E
- 数组元素类型matcher
- 匹配接口,实现此接口自定义匹配规则beginIndexInclude
- 检索开始的位置,不能为负数array
- 数组PrimitiveArrayUtil.INDEX_NOT_FOUND
表示未匹配到public static <T> T[] newArray(Class<?> componentType, int newSize)
T
- 数组元素类型componentType
- 元素类型,例如:Integer.class
,但是不能使用原始类型,例如:int.class
newSize
- 大小public static Object[] newArray(int newSize)
Object
类型空数组newSize
- 大小Object
类型的空数组public static Class<?> getComponentType(Object array)
array
- 数组对象public static Class<?> getComponentType(Class<?> arrayClass)
arrayClass
- 数组对象的classpublic static Class<?> getArrayType(Class<?> componentType)
本方法是 getComponentType(Class)
的逆方法
componentType
- 数组元素类型public static Object[] cast(Class<?> type, Object arrayObj) throws NullPointerException, IllegalArgumentException
type
- 数组类型或数组元素类型arrayObj
- 原数组NullPointerException
- 提供参数为空IllegalArgumentException
- 参数arrayObj不是数组@SafeVarargs public static <T> T[] append(T[] buffer, T... newElements)
T
- 数组元素类型buffer
- 已有数组newElements
- 新元素@SafeVarargs public static <A,T> A append(A array, T... newElements)
A
- 数组类型T
- 数组元素类型array
- 已有数组newElements
- 新元素public static <T> T[] setOrAppend(T[] array, int index, T value)
T
- 数组元素类型array
- 已有数组index
- 位置,大于等于长度则追加,否则替换value
- 新值public static <A> A setOrAppend(A array, int index, Object value)
A
- 数组类型array
- 已有数组index
- 位置,大于等于长度则追加,否则替换value
- 新值public static <A> A setOrPadding(A array, int index, Object value)
null
或0
直到到达index后,设置值A
- 数组类型array
- 已有数组index
- 位置,大于等于长度则追加,否则替换value
- 新值public static <A,E> A setOrPadding(A array, int index, E value, E paddingValue)
A
- 数组类型E
- 元素类型array
- 已有数组index
- 位置,大于等于长度则追加,否则替换value
- 新值paddingValue
- 填充值@SafeVarargs public static <T> T[] addAll(T[]... arrays)
T
- 数组元素类型arrays
- 数组集合public static <T> T[] replace(T[] array, int index, T... values)
T
- 数组元素类型array
- 已有数组index
- 位置values
- 新值public static <A> A replace(A array, int index, A values)
A
- 数组类型array
- 已有数组index
- 位置values
- 新值public static <T> T[] insert(T[] buffer, int index, T... newElements)
T
- 数组元素类型buffer
- 已有数组index
- 插入位置,此位置为对应此位置元素之前的空档newElements
- 新元素@SafeVarargs public static <A,E> A insert(A array, int index, E... newElements)
A
- 数组类型E
- 数组元素类型array
- 已有数组,可以为原始类型数组index
- 插入位置,此位置为对应此位置元素之前的空档newElements
- 新元素public static <T> T[] resize(T[] data, int newSize, Class<?> componentType)
T
- 数组元素类型data
- 原数组newSize
- 新的数组大小componentType
- 数组元素类型public static Object resize(Object array, int newSize)
array
- 原数组newSize
- 新的数组大小System.arraycopy(Object, int, Object, int, int)
public static <T> T[] resize(T[] buffer, int newSize)
T
- 数组元素类型buffer
- 原数组newSize
- 新的数组大小public static <T> T copy(Object src, T dest)
T
- 目标数组类型src
- 源数组dest
- 目标数组public static <T> T copy(Object src, T dest, int length)
T
- 目标数组类型src
- 源数组dest
- 目标数组length
- 拷贝数组长度public static <T> T copy(Object src, int srcPos, T dest, int destPos, int length)
T
- 目标数组类型src
- 源数组srcPos
- 源数组开始位置dest
- 目标数组destPos
- 目标数组开始位置length
- 拷贝数组长度public static <T> T[] clone(T[] array)
T
- 数组元素类型array
- 被克隆的数组public static <T> T clone(T obj)
null
T
- 数组元素类型obj
- 数组对象public static <T> T[] edit(T[] array, UnaryOperator<T> editor)
null
则抛弃这个元素对象T
- 数组元素类型array
- 数组editor
- 编辑器接口,为 null
则返回原数组public static <T> T[] filter(T[] array, Predicate<T> predicate)
T
- 数组元素类型array
- 数组predicate
- 过滤器接口,用于定义过滤规则,为null
则返回原数组public static <T> T[] removeNull(T[] array)
null
元素T
- 数组元素类型array
- 数组public static <T extends CharSequence> T[] removeEmpty(T[] array)
null
或者"" 元素T
- 数组元素类型array
- 数组public static <T extends CharSequence> T[] removeBlank(T[] array)
null
或者""或者空白字符串 元素T
- 数组元素类型array
- 数组public static String[] nullToEmpty(String[] array)
array
- 数组public static <K,V> Map<K,V> zip(K[] keys, V[] values, boolean isOrder)
K
- Key类型V
- Value类型keys
- 键列表values
- 值列表isOrder
- Map中的元素是否保留键值数组本身的顺序public static <K,V> Map<K,V> zip(K[] keys, V[] values)
K
- Key类型V
- Value类型keys
- 键列表values
- 值列表public static <T> int indexOf(T[] array, Object value, int beginIndexInclude)
PrimitiveArrayUtil.INDEX_NOT_FOUND
T
- 数组类型array
- 数组value
- 被检查的元素beginIndexInclude
- 检索开始的位置PrimitiveArrayUtil.INDEX_NOT_FOUND
public static <T> int indexOf(T[] array, Object value)
PrimitiveArrayUtil.INDEX_NOT_FOUND
T
- 数组类型array
- 数组value
- 被检查的元素PrimitiveArrayUtil.INDEX_NOT_FOUND
public static int indexOfIgnoreCase(CharSequence[] array, CharSequence value)
PrimitiveArrayUtil.INDEX_NOT_FOUND
array
- 数组value
- 被检查的元素PrimitiveArrayUtil.INDEX_NOT_FOUND
public static <T> int lastIndexOf(T[] array, Object value)
PrimitiveArrayUtil.INDEX_NOT_FOUND
T
- 数组类型array
- 数组value
- 被检查的元素PrimitiveArrayUtil.INDEX_NOT_FOUND
public static <T> int lastIndexOf(T[] array, Object value, int endInclude)
PrimitiveArrayUtil.INDEX_NOT_FOUND
T
- 数组类型array
- 数组value
- 被检查的元素endInclude
- 从后向前查找时的起始位置,一般为array.length - 1
PrimitiveArrayUtil.INDEX_NOT_FOUND
public static <T> boolean contains(T[] array, T value)
T
- 数组元素类型array
- 数组value
- 被检查的元素public static <T> boolean containsAny(T[] array, T... values)
T
- 数组元素类型array
- 数组values
- 被检查的多个元素public static <T> boolean containsAll(T[] array, T... values)
T
- 数组元素类型array
- 数组values
- 被检查的多个元素public static boolean containsIgnoreCase(CharSequence[] array, CharSequence value)
array
- 数组value
- 被检查的元素public static Object[] wrap(Object obj)
obj
- 对象,可以是对象数组或者基本类型数组HutoolException
- 对象为非数组public static boolean isArray(Object obj)
obj
- 对象null
返回falsepublic static <E> E get(Object array, int index)
E
- 数组元素类型array
- 数组对象index
- 下标,支持负数public static <E> E get(E[] array, Predicate<E> predicate)
E
- 元素类型array
- 数组predicate
- 条件null
public static <T> T[] getAny(Object array, int... indexes)
T
- 数组元素类型array
- 数组,如果提供为null
则返回null
indexes
- 下标列表public static String toString(Object obj)
obj
- 集合或数组对象public static int length(Object array) throws IllegalArgumentException
null
,返回0
ArrayUtil.length(null) = 0 ArrayUtil.length([]) = 0 ArrayUtil.length([null]) = 1 ArrayUtil.length([true, false]) = 2 ArrayUtil.length([1, 2, 3]) = 3 ArrayUtil.length(["a", "b", "c"]) = 3
array
- 数组对象IllegalArgumentException
- 如果参数不为数组,抛出此异常Array.getLength(Object)
public static <T> String join(T[] array, CharSequence conjunction)
T
- 数组元素类型array
- 数组conjunction
- 分隔符public static <T> String join(T[] array, CharSequence delimiter, String prefix, String suffix)
T
- 数组元素类型array
- 数组delimiter
- 分隔符prefix
- 每个元素添加的前缀,null表示不添加suffix
- 每个元素添加的后缀,null表示不添加public static <T> String join(T[] array, CharSequence conjunction, UnaryOperator<T> editor)
T
- 数组元素类型array
- 数组conjunction
- 分隔符editor
- 每个元素的编辑器,null表示不编辑public static String join(Object array, CharSequence conjunction)
array
- 数组conjunction
- 分隔符public static <T> T[] remove(T[] array, int index) throws IllegalArgumentException
T
- 数组元素类型array
- 数组对象,可以是对象数组,也可以原始类型数组index
- 位置,如果位置小于0或者大于长度,返回原数组IllegalArgumentException
- 参数对象不为数组对象public static <T> T[] removeEle(T[] array, T element) throws IllegalArgumentException
T
- 数组元素类型array
- 数组对象,可以是对象数组,也可以原始类型数组element
- 要移除的元素IllegalArgumentException
- 参数对象不为数组对象public static <T> T[] reverse(T[] array, int startIndexInclusive, int endIndexExclusive)
T
- 数组元素类型array
- 数组,会变更startIndexInclusive
- 开始位置(包含)endIndexExclusive
- 结束位置(不包含)public static <T> T[] reverse(T[] array)
T
- 数组元素类型array
- 数组,会变更public static <T extends Comparable<? super T>> T min(T[] numberArray)
T
- 元素类型numberArray
- 数字数组public static <T extends Comparable<? super T>> T min(T[] numberArray, Comparator<T> comparator)
T
- 元素类型numberArray
- 数字数组comparator
- 比较器,null按照默认比较public static <T extends Comparable<? super T>> T max(T[] numberArray)
T
- 元素类型numberArray
- 数字数组public static <T extends Comparable<? super T>> T max(T[] numberArray, Comparator<T> comparator)
T
- 元素类型numberArray
- 数字数组comparator
- 比较器,null表示默认比较器public static <T> T[] shuffle(T[] array)
T
- 元素类型array
- 数组,会变更public static <T> T[] shuffle(T[] array, Random random)
T
- 元素类型array
- 数组,会变更random
- 随机数生成器public static <T> T[] swap(T[] array, int index1, int index2)
T
- 元素类型array
- 数组index1
- 位置1index2
- 位置2public static Object swap(Object array, int index1, int index2)
array
- 数组对象index1
- 位置1index2
- 位置2public static <T> T[] distinct(T[] array)
LinkedHashSet
去重T
- 数组元素类型array
- 数组public static <T,K> T[] distinct(T[] array, Function<T,K> uniqueGenerator, boolean override)
LinkedHashSet
去重T
- 数组元素类型K
- 唯一键类型array
- 数组uniqueGenerator
- 唯一键生成器override
- 是否覆盖模式,如果为true
,加入的新值会覆盖相同key的旧值,否则会忽略新加值public static <R> R[] map(Object array, Class<R> targetComponentType, Function<?,? extends R> func)
R
- 目标数组类型array
- 被转换的数组targetComponentType
- 目标的元素类型,只能为包装类型func
- 转换规则函数public static <T,R> R[] mapToArray(T[] array, Function<? super T,? extends R> func, IntFunction<R[]> generator)
T
- 原数组类型R
- 目标数组类型array
- 被转换的数组func
- 转换规则函数generator
- 数组生成器,如返回String[],则传入String[]::newpublic static <T,R> List<R> mapToList(T[] array, Function<? super T,? extends R> func)
List
T
- 原数组类型R
- 目标数组类型array
- 被转换的数组func
- 转换规则函数public static <T,R> Set<R> mapToSet(T[] array, Function<? super T,? extends R> func)
Set
T
- 原数组类型R
- 目标数组类型array
- 被转换的数组func
- 转换规则函数public static boolean equals(Object array1, Object array2)
array1
- 数组1array2
- 数组2public static <T> T[] sub(T[] array, int start, int end)
T
- 数组元素类型array
- 数组,不允许为空start
- 开始位置(包括)end
- 结束位置(不包括)Arrays.copyOfRange(Object[], int, int)
public static <A> A sub(A array, int beginInclude, int endExclude)
A
- 数组类型array
- 数组beginInclude
- 开始位置(包括)endExclude
- 结束位置(不包括)public static <A> A sub(A array, int beginInclude, int endExclude, int step)
A
- 数组类型array
- 数组beginInclude
- 开始位置(包括)endExclude
- 结束位置(不包括)step
- 步进public static <T> boolean isSub(T[] array, T[] subArray)
T
- 数组元素类型array
- 数组subArray
- 子数组public static <T> int indexOfSub(T[] array, T[] subArray)
T
- 数组元素类型array
- 数组subArray
- 子数组public static <T> int indexOfSub(T[] array, int beginInclude, T[] subArray)
T
- 数组元素类型array
- 数组beginInclude
- 查找开始的位置(包含)subArray
- 子数组public static <T> int lastIndexOfSub(T[] array, T[] subArray)
T
- 数组元素类型array
- 数组subArray
- 子数组public static <T> int lastIndexOfSub(T[] array, int endInclude, T[] subArray)
T
- 数组元素类型array
- 数组endInclude
- 从后往前查找时的开始位置(包含),负数为从后向前的位置,如-1表示最后一位subArray
- 子数组public static <T> boolean isSorted(T[] array, Comparator<? super T> comparator)
若传入空数组或空比较器,则返回false
;元素全部相等,返回 true
T
- 数组元素类型array
- 数组comparator
- 比较器,需要自己处理null值比较public static <T extends Comparable<? super T>> boolean isSorted(T[] array)
若传入空数组,则返回false
;元素全部相等,返回 true
T
- 数组元素类型,该类型需要实现Comparable接口array
- 数组NullPointerException
- 如果数组元素含有null值public static <T extends Comparable<? super T>> boolean isSortedASC(T[] array)
array[i].compareTo(array[i + 1]) <= 0
若传入空数组,则返回false
T
- 数组元素类型,该类型需要实现Comparable接口array
- 数组NullPointerException
- 如果数组元素含有null值public static <T extends Comparable<? super T>> boolean isSortedDESC(T[] array)
array[i].compareTo(array[i + 1]) >= 0
若传入空数组,则返回false
T
- 数组元素类型,该类型需要实现Comparable接口array
- 数组NullPointerException
- 如果数组元素含有null值public static <T> boolean isSortedASC(T[] array, Comparator<? super T> comparator)
comparator.compare(array[i], array[i + 1]) <= 0
若传入空数组或空比较器,则返回false
T
- 数组元素类型array
- 数组comparator
- 比较器,需要自己处理null值比较public static <T> boolean isSortedDESC(T[] array, Comparator<? super T> comparator)
comparator.compare(array[i], array[i + 1]) >= 0
若传入空数组或空比较器,则返回false
T
- 数组元素类型array
- 数组comparator
- 比较器,需要自己处理null值比较public static <T> Boolean hasSameElement(T[] array)
若传入空数组,则返回false
T
- 数组元素类型array
- 数组public static <T> boolean startWith(T[] array, T[] prefix)
ObjUtil.equals(Object, Object)
匹配。
true
true
false
T
- 数组元素类型array
- 数组prefix
- 前缀Copyright © 2025. All rights reserved.