diff --git a/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java index 06046dbf5..951d20f21 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/ArrayUtil.java @@ -14,7 +14,7 @@ import java.util.*; /** * 数组工具类 - * + * * @author Looly * */ @@ -26,7 +26,7 @@ public class ArrayUtil { // ---------------------------------------------------------------------- isEmpty /** * 数组是否为空 - * + * * @param 数组元素类型 * @param array 数组 * @return 是否为空 @@ -53,7 +53,7 @@ public class ArrayUtil { * 此方法会匹配单一对象,如果此对象为{@code null}则返回true
* 如果此对象为非数组,理解为此对象为数组的第一个元素,则返回false
* 如果此对象为数组对象,数组长度大于0情况下返回false,否则返回true - * + * * @param array 数组 * @return 是否为空 */ @@ -64,12 +64,12 @@ public class ArrayUtil { } return false; } - return true; + return true; } /** * 数组是否为空 - * + * * @param array 数组 * @return 是否为空 */ @@ -79,7 +79,7 @@ public class ArrayUtil { /** * 数组是否为空 - * + * * @param array 数组 * @return 是否为空 */ @@ -89,7 +89,7 @@ public class ArrayUtil { /** * 数组是否为空 - * + * * @param array 数组 * @return 是否为空 */ @@ -99,7 +99,7 @@ public class ArrayUtil { /** * 数组是否为空 - * + * * @param array 数组 * @return 是否为空 */ @@ -109,7 +109,7 @@ public class ArrayUtil { /** * 数组是否为空 - * + * * @param array 数组 * @return 是否为空 */ @@ -119,7 +119,7 @@ public class ArrayUtil { /** * 数组是否为空 - * + * * @param array 数组 * @return 是否为空 */ @@ -129,7 +129,7 @@ public class ArrayUtil { /** * 数组是否为空 - * + * * @param array 数组 * @return 是否为空 */ @@ -139,7 +139,7 @@ public class ArrayUtil { /** * 数组是否为空 - * + * * @param array 数组 * @return 是否为空 */ @@ -150,7 +150,7 @@ public class ArrayUtil { // ---------------------------------------------------------------------- isNotEmpty /** * 数组是否为非空 - * + * * @param 数组元素类型 * @param array 数组 * @return 是否为非空 @@ -164,7 +164,7 @@ public class ArrayUtil { * 此方法会匹配单一对象,如果此对象为{@code null}则返回false
* 如果此对象为非数组,理解为此对象为数组的第一个元素,则返回true
* 如果此对象为数组对象,数组长度大于0情况下返回true,否则返回false - * + * * @param array 数组 * @return 是否为非空 */ @@ -174,7 +174,7 @@ public class ArrayUtil { /** * 数组是否为非空 - * + * * @param array 数组 * @return 是否为非空 */ @@ -184,7 +184,7 @@ public class ArrayUtil { /** * 数组是否为非空 - * + * * @param array 数组 * @return 是否为非空 */ @@ -194,7 +194,7 @@ public class ArrayUtil { /** * 数组是否为非空 - * + * * @param array 数组 * @return 是否为非空 */ @@ -204,7 +204,7 @@ public class ArrayUtil { /** * 数组是否为非空 - * + * * @param array 数组 * @return 是否为非空 */ @@ -214,7 +214,7 @@ public class ArrayUtil { /** * 数组是否为非空 - * + * * @param array 数组 * @return 是否为非空 */ @@ -224,7 +224,7 @@ public class ArrayUtil { /** * 数组是否为非空 - * + * * @param array 数组 * @return 是否为非空 */ @@ -234,7 +234,7 @@ public class ArrayUtil { /** * 数组是否为非空 - * + * * @param array 数组 * @return 是否为非空 */ @@ -244,7 +244,7 @@ public class ArrayUtil { /** * 数组是否为非空 - * + * * @param array 数组 * @return 是否为非空 */ @@ -254,7 +254,7 @@ public class ArrayUtil { /** * 是否包含{@code null}元素 - * + * * @param 数组元素类型 * @param array 被检查的数组 * @return 是否包含{@code null}元素 @@ -288,7 +288,7 @@ public class ArrayUtil { /** * 返回数组中第一个非空元素 - * + * * @param 数组元素类型 * @param array 数组 * @return 非空元素,如果不存在非空元素或数组为空,返回{@code null} @@ -308,7 +308,7 @@ public class ArrayUtil { /** * 新建一个空数组 - * + * * @param 数组元素类型 * @param componentType 元素类型 * @param newSize 大小 @@ -321,7 +321,7 @@ public class ArrayUtil { /** * 新建一个空数组 - * + * * @param newSize 大小 * @return 空数组 * @since 3.3.0 @@ -332,7 +332,7 @@ public class ArrayUtil { /** * 获取数组对象的元素类型 - * + * * @param array 数组对象 * @return 元素类型 * @since 3.2.2 @@ -343,7 +343,7 @@ public class ArrayUtil { /** * 获取数组对象的元素类型 - * + * * @param arrayClass 数组类 * @return 元素类型 * @since 3.2.2 @@ -355,7 +355,7 @@ public class ArrayUtil { /** * 根据数组元素类型,获取数组的类型
* 方法是通过创建一个空数组从而获取其类型 - * + * * @param componentType 数组元素类型 * @return 数组类型 * @since 3.2.2 @@ -368,7 +368,7 @@ public class ArrayUtil { * 强转数组类型
* 强制转换的前提是数组元素类型可被强制转换
* 强制转换后会生成一个新数组 - * + * * @param type 数组类型或数组元素类型 * @param arrayObj 原数组 * @return 转换后的数组类型 @@ -393,11 +393,11 @@ public class ArrayUtil { System.arraycopy(array, 0, result, 0, array.length); return result; } - + /** * 将新元素添加到已有数组中
* 添加新元素会生成一个新的数组,不影响原数组 - * + * * @param 数组元素类型 * @param buffer 已有数组 * @param newElements 新元素 @@ -410,11 +410,11 @@ public class ArrayUtil { } return insert(buffer, buffer.length, newElements); } - + /** * 将新元素添加到已有数组中
* 添加新元素会生成一个新的数组,不影响原数组 - * + * * @param 数组元素类型 * @param array 已有数组 * @param newElements 新元素 @@ -427,10 +427,10 @@ public class ArrayUtil { } return insert(array, length(array), newElements); } - + /** * 将元素值设置为数组的某个位置,当给定的index大于数组长度,则追加 - * + * * @param 数组元素类型 * @param buffer 已有数组 * @param index 位置,大于长度追加,否则替换 @@ -446,10 +446,10 @@ public class ArrayUtil { return append(buffer, value); } } - + /** * 将元素值设置为数组的某个位置,当给定的index大于数组长度,则追加 - * + * * @param array 已有数组 * @param index 位置,大于长度追加,否则替换 * @param value 新值 @@ -469,7 +469,7 @@ public class ArrayUtil { * 将新元素插入到到已有数组中的某个位置
* 添加新元素会生成一个新的数组,不影响原数组
* 如果插入位置为为负数,从原数组从后向前计数,若大于原数组长度,则空白处用null填充 - * + * * @param 数组元素类型 * @param buffer 已有数组 * @param index 插入位置,此位置为对应此位置元素之前的空档 @@ -481,12 +481,12 @@ public class ArrayUtil { public static T[] insert(T[] buffer, int index, T... newElements) { return (T[]) insert((Object)buffer, index, newElements); } - + /** * 将新元素插入到到已有数组中的某个位置
* 添加新元素会生成一个新的数组,不影响原数组
* 如果插入位置为为负数,从原数组从后向前计数,若大于原数组长度,则空白处用null填充 - * + * * @param 数组元素类型 * @param array 已有数组 * @param index 插入位置,此位置为对应此位置元素之前的空档 @@ -502,12 +502,12 @@ public class ArrayUtil { if(isEmpty(array)) { return newElements; } - + final int len = length(array); if (index < 0) { index = (index % len) + len; } - + final T[] result = newArray(array.getClass().getComponentType(), Math.max(len, index) + newElements.length); System.arraycopy(array, 0, result, 0, Math.min(len, index)); System.arraycopy(newElements, 0, result, index, newElements.length); @@ -520,7 +520,7 @@ public class ArrayUtil { /** * 生成一个新的重新设置大小的数组
* 调整大小后拷贝原数组到新数组下。扩大则占位前N个位置,缩小则截断 - * + * * @param 数组元素类型 * @param data 原数组 * @param newSize 新的数组大小 @@ -587,7 +587,7 @@ public class ArrayUtil { /** * 生成一个新的重新设置大小的数组
* 新数组的类型为原数组的类型,调整大小后拷贝原数组到新数组下。扩大则占位前N个位置,缩小则截断 - * + * * @param 数组元素类型 * @param buffer 原数组 * @param newSize 新的数组大小 @@ -600,7 +600,7 @@ public class ArrayUtil { /** * 将多个数组合并在一起
* 忽略null的数组 - * + * * @param 数组元素类型 * @param arrays 数组集合 * @return 合并后的数组 @@ -888,7 +888,7 @@ public class ArrayUtil { /** * 包装 {@link System#arraycopy(Object, int, Object, int, int)}
* 数组复制 - * + * * @param src 源数组 * @param srcPos 源数组开始位置 * @param dest 目标数组 @@ -906,7 +906,7 @@ public class ArrayUtil { /** * 包装 {@link System#arraycopy(Object, int, Object, int, int)}
* 数组复制,缘数组和目标数组都是从位置0开始复制 - * + * * @param src 源数组 * @param dest 目标数组 * @param length 拷贝数组长度 @@ -921,7 +921,7 @@ public class ArrayUtil { /** * 克隆数组 - * + * * @param 数组元素类型 * @param array 被克隆的数组 * @return 新数组 @@ -935,7 +935,7 @@ public class ArrayUtil { /** * 克隆数组,如果非数组返回null - * + * * @param 数组元素类型 * @param obj 数组对象 * @return 克隆后的数组对象 @@ -964,7 +964,7 @@ public class ArrayUtil { /** * 生成一个从0开始的数字列表
- * + * * @param excludedEnd 结束的数字(不包含) * @return 数字列表 */ @@ -975,7 +975,7 @@ public class ArrayUtil { /** * 生成一个数字列表
* 自动判定正序反序 - * + * * @param includedStart 开始的数字(包含) * @param excludedEnd 结束的数字(不包含) * @return 数字列表 @@ -987,7 +987,7 @@ public class ArrayUtil { /** * 生成一个数字列表
* 自动判定正序反序 - * + * * @param includedStart 开始的数字(包含) * @param excludedEnd 结束的数字(不包含) * @param step 步进 @@ -1019,7 +1019,7 @@ public class ArrayUtil { /** * 拆分byte数组为几个等份(最后一份可能小于len) - * + * * @param array 数组 * @param len 每个小节的长度 * @return 拆分后的数组 @@ -1048,12 +1048,12 @@ public class ArrayUtil { /** * 过滤
* 过滤过程通过传入的Editor实现来返回需要的元素内容,这个Editor实现可以实现以下功能: - * + * *
 	 * 1、过滤出需要的对象,如果返回null表示这个元素对象抛弃
 	 * 2、修改元素对象,返回集合中为修改后的对象
 	 * 
- * + * * @param 数组元素类型 * @param array 数组 * @param editor 编辑器接口 @@ -1095,11 +1095,11 @@ public class ArrayUtil { /** * 过滤
* 过滤过程通过传入的Filter实现来过滤返回需要的元素内容,这个Filter实现可以实现以下功能: - * + * *
 	 * 1、过滤出需要的对象,{@link Filter#accept(Object)}方法返回true的对象将被加入结果集合中
 	 * 
- * + * * @param 数组元素类型 * @param array 数组 * @param filter 过滤器接口,用于定义过滤规则,null表示不过滤,返回原数组 @@ -1110,7 +1110,7 @@ public class ArrayUtil { if(null == filter) { return array; } - + final ArrayList list = new ArrayList<>(array.length); for (T t : array) { if (filter.accept(t)) { @@ -1162,7 +1162,7 @@ public class ArrayUtil { /** * 数组元素中的null转换为"" - * + * * @param array 数组 * @return 新数组 * @since 3.2.1 @@ -1178,7 +1178,7 @@ public class ArrayUtil { * values = [1,2,3,4]
* 则得到的Map是 {a=1, b=2, c=3, d=4}
* 如果两个数组长度不同,则只对应最短部分 - * + * * @param Key类型 * @param Value类型 * @param keys 键列表 @@ -1208,7 +1208,7 @@ public class ArrayUtil { * values = [1,2,3,4]
* 则得到的Map是 {a=1, b=2, c=3, d=4}
* 如果两个数组长度不同,则只对应最短部分 - * + * * @param Key类型 * @param Value类型 * @param keys 键列表 @@ -1222,7 +1222,7 @@ public class ArrayUtil { // ------------------------------------------------------------------- indexOf and lastIndexOf and contains /** * 返回数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param 数组类型 * @param array 数组 * @param value 被检查的元素 @@ -1242,7 +1242,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在位置,忽略大小写,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1261,7 +1261,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在最后的位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param 数组类型 * @param array 数组 * @param value 被检查的元素 @@ -1281,9 +1281,9 @@ public class ArrayUtil { /** * 数组中是否包含元素 - * + * * @param 数组元素类型 - * + * * @param array 数组 * @param value 被检查的元素 * @return 是否包含 @@ -1291,12 +1291,12 @@ public class ArrayUtil { public static boolean contains(T[] array, T value) { return indexOf(array, value) > INDEX_NOT_FOUND; } - + /** * 数组中是否包含指定元素中的任意一个 - * + * * @param 数组元素类型 - * + * * @param array 数组 * @param values 被检查的多个元素 * @return 是否包含指定元素中的任意一个 @@ -1314,7 +1314,7 @@ public class ArrayUtil { /** * 数组中是否包含元素,忽略大小写 - * + * * @param array 数组 * @param value 被检查的元素 * @return 是否包含 @@ -1326,7 +1326,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1345,7 +1345,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在最后的位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1364,7 +1364,7 @@ public class ArrayUtil { /** * 数组中是否包含元素 - * + * * @param array 数组 * @param value 被检查的元素 * @return 是否包含 @@ -1376,7 +1376,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1395,7 +1395,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在最后的位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1414,7 +1414,7 @@ public class ArrayUtil { /** * 数组中是否包含元素 - * + * * @param array 数组 * @param value 被检查的元素 * @return 是否包含 @@ -1426,7 +1426,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1445,7 +1445,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在最后的位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1464,7 +1464,7 @@ public class ArrayUtil { /** * 数组中是否包含元素 - * + * * @param array 数组 * @param value 被检查的元素 * @return 是否包含 @@ -1476,7 +1476,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1495,7 +1495,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在最后的位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1514,7 +1514,7 @@ public class ArrayUtil { /** * 数组中是否包含元素 - * + * * @param array 数组 * @param value 被检查的元素 * @return 是否包含 @@ -1526,7 +1526,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1545,7 +1545,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在最后的位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1564,7 +1564,7 @@ public class ArrayUtil { /** * 数组中是否包含元素 - * + * * @param array 数组 * @param value 被检查的元素 * @return 是否包含 @@ -1576,7 +1576,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1595,7 +1595,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在最后的位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1614,7 +1614,7 @@ public class ArrayUtil { /** * 数组中是否包含元素 - * + * * @param array 数组 * @param value 被检查的元素 * @return 是否包含 @@ -1626,7 +1626,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1645,7 +1645,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在最后的位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1664,7 +1664,7 @@ public class ArrayUtil { /** * 数组中是否包含元素 - * + * * @param array 数组 * @param value 被检查的元素 * @return 是否包含 @@ -1676,7 +1676,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1695,7 +1695,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在最后的位置,未找到返回{@link #INDEX_NOT_FOUND} - * + * * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1714,7 +1714,7 @@ public class ArrayUtil { /** * 数组中是否包含元素 - * + * * @param array 数组 * @param value 被检查的元素 * @return 是否包含 @@ -1727,7 +1727,7 @@ public class ArrayUtil { // ------------------------------------------------------------------- Wrap and unwrap /** * 将原始类型数组包装为包装类型 - * + * * @param values 原始类型数组 * @return 包装类型数组 */ @@ -1749,7 +1749,7 @@ public class ArrayUtil { /** * 包装类数组转为原始类型数组 - * + * * @param values 包装类型数组 * @return 原始类型数组 */ @@ -1771,7 +1771,7 @@ public class ArrayUtil { /** * 将原始类型数组包装为包装类型 - * + * * @param values 原始类型数组 * @return 包装类型数组 */ @@ -1793,7 +1793,7 @@ public class ArrayUtil { /** * 包装类数组转为原始类型数组 - * + * * @param values 包装类型数组 * @return 原始类型数组 */ @@ -1815,7 +1815,7 @@ public class ArrayUtil { /** * 将原始类型数组包装为包装类型 - * + * * @param values 原始类型数组 * @return 包装类型数组 */ @@ -1837,7 +1837,7 @@ public class ArrayUtil { /** * 包装类数组转为原始类型数组 - * + * * @param values 包装类型数组 * @return 原始类型数组 */ @@ -1859,7 +1859,7 @@ public class ArrayUtil { /** * 将原始类型数组包装为包装类型 - * + * * @param values 原始类型数组 * @return 包装类型数组 */ @@ -1881,7 +1881,7 @@ public class ArrayUtil { /** * 包装类数组转为原始类型数组 - * + * * @param values 包装类型数组 * @return 原始类型数组 */ @@ -1903,7 +1903,7 @@ public class ArrayUtil { /** * 将原始类型数组包装为包装类型 - * + * * @param values 原始类型数组 * @return 包装类型数组 */ @@ -1925,7 +1925,7 @@ public class ArrayUtil { /** * 包装类数组转为原始类型数组 - * + * * @param values 包装类型数组 * @return 原始类型数组 */ @@ -1947,7 +1947,7 @@ public class ArrayUtil { /** * 将原始类型数组包装为包装类型 - * + * * @param values 原始类型数组 * @return 包装类型数组 */ @@ -1969,7 +1969,7 @@ public class ArrayUtil { /** * 包装类数组转为原始类型数组 - * + * * @param values 包装类型数组 * @return 原始类型数组 */ @@ -1991,7 +1991,7 @@ public class ArrayUtil { /** * 将原始类型数组包装为包装类型 - * + * * @param values 原始类型数组 * @return 包装类型数组 */ @@ -2013,7 +2013,7 @@ public class ArrayUtil { /** * 包装类数组转为原始类型数组 - * + * * @param values 包装类型数组 * @return 原始类型数组 */ @@ -2035,7 +2035,7 @@ public class ArrayUtil { /** * 将原始类型数组包装为包装类型 - * + * * @param values 原始类型数组 * @return 包装类型数组 */ @@ -2057,7 +2057,7 @@ public class ArrayUtil { /** * 包装类数组转为原始类型数组 - * + * * @param values 包装类型数组 * @return 原始类型数组 */ @@ -2079,7 +2079,7 @@ public class ArrayUtil { /** * 包装数组对象 - * + * * @param obj 对象,可以是对象数组或者基本类型数组 * @return 包装类型数组或对象数组 * @throws UtilException 对象为非数组 @@ -2120,7 +2120,7 @@ public class ArrayUtil { /** * 对象是否为数组对象 - * + * * @param obj 对象 * @return 是否为数组对象,如果为{@code null} 返回false */ @@ -2135,7 +2135,7 @@ public class ArrayUtil { /** * 获取数组对象中指定index的值,支持负数,例如-1表示倒数第一个值
* 如果数组下标越界,返回null - * + * * @param 数组元素类型 * @param array 数组对象 * @param index 下标,支持负数 @@ -2147,7 +2147,7 @@ public class ArrayUtil { if(null == array) { return null; } - + if (index < 0) { index += Array.getLength(array); } @@ -2160,7 +2160,7 @@ public class ArrayUtil { /** * 获取数组中指定多个下标元素值,组成新数组 - * + * * @param 数组元素类型 * @param array 数组 * @param indexes 下标列表 @@ -2170,14 +2170,14 @@ public class ArrayUtil { if(null == array) { return null; } - + final T[] result = newArray(array.getClass().getComponentType(), indexes.length); for (int i : indexes) { result[i] = get(array, i); } return result; } - + /** * 获取子数组 * @@ -2213,10 +2213,10 @@ public class ArrayUtil { } return Arrays.copyOfRange(array, start, end); } - + /** * 获取子数组 - * + * * @param array 数组 * @param start 开始位置(包括) * @param end 结束位置(不包括) @@ -2248,10 +2248,10 @@ public class ArrayUtil { } return Arrays.copyOfRange(array, start, end); } - + /** * 获取子数组 - * + * * @param array 数组 * @param start 开始位置(包括) * @param end 结束位置(不包括) @@ -2283,10 +2283,10 @@ public class ArrayUtil { } return Arrays.copyOfRange(array, start, end); } - + /** * 获取子数组 - * + * * @param array 数组 * @param start 开始位置(包括) * @param end 结束位置(不包括) @@ -2318,10 +2318,10 @@ public class ArrayUtil { } return Arrays.copyOfRange(array, start, end); } - + /** * 获取子数组 - * + * * @param array 数组 * @param start 开始位置(包括) * @param end 结束位置(不包括) @@ -2353,10 +2353,10 @@ public class ArrayUtil { } return Arrays.copyOfRange(array, start, end); } - + /** * 获取子数组 - * + * * @param array 数组 * @param start 开始位置(包括) * @param end 结束位置(不包括) @@ -2388,10 +2388,10 @@ public class ArrayUtil { } return Arrays.copyOfRange(array, start, end); } - + /** * 获取子数组 - * + * * @param array 数组 * @param start 开始位置(包括) * @param end 结束位置(不包括) @@ -2423,10 +2423,10 @@ public class ArrayUtil { } return Arrays.copyOfRange(array, start, end); } - + /** * 获取子数组 - * + * * @param array 数组 * @param start 开始位置(包括) * @param end 结束位置(不包括) @@ -2458,10 +2458,10 @@ public class ArrayUtil { } return Arrays.copyOfRange(array, start, end); } - + /** * 获取子数组 - * + * * @param array 数组 * @param start 开始位置(包括) * @param end 结束位置(不包括) @@ -2496,7 +2496,7 @@ public class ArrayUtil { /** * 获取子数组 - * + * * @param array 数组 * @param start 开始位置(包括) * @param end 结束位置(不包括) @@ -2509,7 +2509,7 @@ public class ArrayUtil { /** * 获取子数组 - * + * * @param array 数组 * @param start 开始位置(包括) * @param end 结束位置(不包括) @@ -2554,7 +2554,7 @@ public class ArrayUtil { /** * 数组或集合转String - * + * * @param obj 集合或数组对象 * @return 数组字符串,与集合转字符串格式相同 */ @@ -2594,7 +2594,7 @@ public class ArrayUtil { /** * 获取数组长度
* 如果参数为{@code null},返回0 - * + * *
 	 * ArrayUtil.length(null)            = 0
 	 * ArrayUtil.length([])              = 0
@@ -2603,7 +2603,7 @@ public class ArrayUtil {
 	 * ArrayUtil.length([1, 2, 3])       = 3
 	 * ArrayUtil.length(["a", "b", "c"]) = 3
 	 * 
- * + * * @param array 数组对象 * @return 数组长度 * @throws IllegalArgumentException 如果参数不为数组,抛出此异常 @@ -2616,10 +2616,10 @@ public class ArrayUtil { } return Array.getLength(array); } - + /** * 以 conjunction 为分隔符将数组转换为字符串 - * + * * @param 被处理的集合 * @param array 数组 * @param conjunction 分隔符 @@ -2631,7 +2631,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 - * + * * @param 被处理的集合 * @param array 数组 * @param conjunction 分隔符 @@ -2701,7 +2701,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 - * + * * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 @@ -2726,7 +2726,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 - * + * * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 @@ -2751,7 +2751,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 - * + * * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 @@ -2776,7 +2776,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 - * + * * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 @@ -2801,7 +2801,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 - * + * * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 @@ -2826,7 +2826,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 - * + * * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 @@ -2851,7 +2851,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 - * + * * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 @@ -2876,7 +2876,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 - * + * * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 @@ -2901,7 +2901,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 - * + * * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 @@ -2940,7 +2940,7 @@ public class ArrayUtil { /** * {@link ByteBuffer} 转byte数组 - * + * * @param bytebuffer {@link ByteBuffer} * @return byte数组 * @since 3.0.1 @@ -2961,7 +2961,7 @@ public class ArrayUtil { /** * 将集合转为数组 - * + * * @param 数组元素类型 * @param iterator {@link Iterator} * @param componentType 集合元素类型 @@ -2974,7 +2974,7 @@ public class ArrayUtil { /** * 将集合转为数组 - * + * * @param 数组元素类型 * @param iterable {@link Iterable} * @param componentType 集合元素类型 @@ -2987,7 +2987,7 @@ public class ArrayUtil { /** * 将集合转为数组 - * + * * @param 数组元素类型 * @param collection 集合 * @param componentType 集合元素类型 @@ -3002,9 +3002,9 @@ public class ArrayUtil { /** * 移除数组中对应位置的元素
* copy from commons-lang - * + * * @param 数组元素类型 - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param index 位置,如果位置小于0或者大于长度,返回原数组 * @return 去掉指定元素后的新数组或原数组 @@ -3019,7 +3019,7 @@ public class ArrayUtil { /** * 移除数组中对应位置的元素
* copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param index 位置,如果位置小于0或者大于长度,返回原数组 * @return 去掉指定元素后的新数组或原数组 @@ -3033,7 +3033,7 @@ public class ArrayUtil { /** * 移除数组中对应位置的元素
* copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param index 位置,如果位置小于0或者大于长度,返回原数组 * @return 去掉指定元素后的新数组或原数组 @@ -3047,7 +3047,7 @@ public class ArrayUtil { /** * 移除数组中对应位置的元素
* copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param index 位置,如果位置小于0或者大于长度,返回原数组 * @return 去掉指定元素后的新数组或原数组 @@ -3061,7 +3061,7 @@ public class ArrayUtil { /** * 移除数组中对应位置的元素
* copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param index 位置,如果位置小于0或者大于长度,返回原数组 * @return 去掉指定元素后的新数组或原数组 @@ -3075,7 +3075,7 @@ public class ArrayUtil { /** * 移除数组中对应位置的元素
* copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param index 位置,如果位置小于0或者大于长度,返回原数组 * @return 去掉指定元素后的新数组或原数组 @@ -3089,7 +3089,7 @@ public class ArrayUtil { /** * 移除数组中对应位置的元素
* copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param index 位置,如果位置小于0或者大于长度,返回原数组 * @return 去掉指定元素后的新数组或原数组 @@ -3103,7 +3103,7 @@ public class ArrayUtil { /** * 移除数组中对应位置的元素
* copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param index 位置,如果位置小于0或者大于长度,返回原数组 * @return 去掉指定元素后的新数组或原数组 @@ -3117,7 +3117,7 @@ public class ArrayUtil { /** * 移除数组中对应位置的元素
* copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param index 位置,如果位置小于0或者大于长度,返回原数组 * @return 去掉指定元素后的新数组或原数组 @@ -3131,7 +3131,7 @@ public class ArrayUtil { /** * 移除数组中对应位置的元素
* copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param index 位置,如果位置小于0或者大于长度,返回原数组 * @return 去掉指定元素后的新数组或原数组 @@ -3162,7 +3162,7 @@ public class ArrayUtil { /** * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang - * + * * @param 数组元素类型 * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 @@ -3177,7 +3177,7 @@ public class ArrayUtil { /** * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 @@ -3191,7 +3191,7 @@ public class ArrayUtil { /** * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 @@ -3205,7 +3205,7 @@ public class ArrayUtil { /** * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 @@ -3219,7 +3219,7 @@ public class ArrayUtil { /** * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 @@ -3233,7 +3233,7 @@ public class ArrayUtil { /** * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 @@ -3247,7 +3247,7 @@ public class ArrayUtil { /** * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 @@ -3261,7 +3261,7 @@ public class ArrayUtil { /** * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 @@ -3275,7 +3275,7 @@ public class ArrayUtil { /** * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang - * + * * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 @@ -3290,7 +3290,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param 数组元素类型 * @param array 数组,会变更 * @param startIndexInclusive 开始位置(包含) @@ -3317,7 +3317,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param 数组元素类型 * @param array 数组,会变更 * @return 变更后的原数组 @@ -3329,7 +3329,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) * @param endIndexExclusive 结束位置(不包含) @@ -3355,7 +3355,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @return 变更后的原数组 * @since 3.0.9 @@ -3366,7 +3366,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) * @param endIndexExclusive 结束位置(不包含) @@ -3392,7 +3392,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @return 变更后的原数组 * @since 3.0.9 @@ -3403,7 +3403,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) * @param endIndexExclusive 结束位置(不包含) @@ -3429,7 +3429,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @return 变更后的原数组 * @since 3.0.9 @@ -3440,7 +3440,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) * @param endIndexExclusive 结束位置(不包含) @@ -3466,7 +3466,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @return 变更后的原数组 * @since 3.0.9 @@ -3477,7 +3477,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) * @param endIndexExclusive 结束位置(不包含) @@ -3503,7 +3503,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @return 变更后的原数组 * @since 3.0.9 @@ -3514,7 +3514,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) * @param endIndexExclusive 结束位置(不包含) @@ -3540,7 +3540,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @return 变更后的原数组 * @since 3.0.9 @@ -3551,7 +3551,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) * @param endIndexExclusive 结束位置(不包含) @@ -3577,7 +3577,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @return 变更后的原数组 * @since 3.0.9 @@ -3588,7 +3588,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) * @param endIndexExclusive 结束位置(不包含) @@ -3614,7 +3614,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 - * + * * @param array 数组,会变更 * @return 变更后的原数组 * @since 3.0.9 @@ -3638,7 +3638,7 @@ public class ArrayUtil { /** * 取最小值 - * + * * @param 元素类型 * @param numberArray 数字数组 * @param comparator 比较器,null按照默认比较 @@ -3660,7 +3660,7 @@ public class ArrayUtil { /** * 取最小值 - * + * * @param numberArray 数字数组 * @return 最小值 * @since 3.0.9 @@ -3680,7 +3680,7 @@ public class ArrayUtil { /** * 取最小值 - * + * * @param numberArray 数字数组 * @return 最小值 * @since 3.0.9 @@ -3700,7 +3700,7 @@ public class ArrayUtil { /** * 取最小值 - * + * * @param numberArray 数字数组 * @return 最小值 * @since 3.0.9 @@ -3720,7 +3720,7 @@ public class ArrayUtil { /** * 取最小值 - * + * * @param numberArray 数字数组 * @return 最小值 * @since 3.0.9 @@ -3740,7 +3740,7 @@ public class ArrayUtil { /** * 取最小值 - * + * * @param numberArray 数字数组 * @return 最小值 * @since 3.0.9 @@ -3760,7 +3760,7 @@ public class ArrayUtil { /** * 取最小值 - * + * * @param numberArray 数字数组 * @return 最小值 * @since 3.0.9 @@ -3780,7 +3780,7 @@ public class ArrayUtil { /** * 取最小值 - * + * * @param numberArray 数字数组 * @return 最小值 * @since 3.0.9 @@ -3812,7 +3812,7 @@ public class ArrayUtil { /** * 取最大值 - * + * * @param 元素类型 * @param numberArray 数字数组 * @param comparator 比较器,null表示默认比较器 @@ -3834,7 +3834,7 @@ public class ArrayUtil { /** * 取最大值 - * + * * @param numberArray 数字数组 * @return 最大值 * @since 3.0.9 @@ -3854,7 +3854,7 @@ public class ArrayUtil { /** * 取最大值 - * + * * @param numberArray 数字数组 * @return 最大值 * @since 3.0.9 @@ -3874,7 +3874,7 @@ public class ArrayUtil { /** * 取最大值 - * + * * @param numberArray 数字数组 * @return 最大值 * @since 3.0.9 @@ -3894,7 +3894,7 @@ public class ArrayUtil { /** * 取最大值 - * + * * @param numberArray 数字数组 * @return 最大值 * @since 3.0.9 @@ -3914,7 +3914,7 @@ public class ArrayUtil { /** * 取最大值 - * + * * @param numberArray 数字数组 * @return 最大值 * @since 3.0.9 @@ -3934,7 +3934,7 @@ public class ArrayUtil { /** * 取最大值 - * + * * @param numberArray 数字数组 * @return 最大值 * @since 3.0.9 @@ -3954,7 +3954,7 @@ public class ArrayUtil { /** * 取最大值 - * + * * @param numberArray 数字数组 * @return 最大值 * @since 3.0.9 @@ -3974,7 +3974,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 - * + * * @param array 数组 * @param index1 位置1 * @param index2 位置2 @@ -3993,7 +3993,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 - * + * * @param array 数组 * @param index1 位置1 * @param index2 位置2 @@ -4012,7 +4012,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 - * + * * @param array 数组 * @param index1 位置1 * @param index2 位置2 @@ -4031,7 +4031,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 - * + * * @param array 数组 * @param index1 位置1 * @param index2 位置2 @@ -4050,7 +4050,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 - * + * * @param array 数组 * @param index1 位置1 * @param index2 位置2 @@ -4069,7 +4069,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 - * + * * @param array 数组 * @param index1 位置1 * @param index2 位置2 @@ -4088,7 +4088,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 - * + * * @param array 数组 * @param index1 位置1 * @param index2 位置2 @@ -4107,7 +4107,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 - * + * * @param array 数组 * @param index1 位置1 * @param index2 位置2 @@ -4126,7 +4126,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 - * + * * @param 元素类型 * @param array 数组 * @param index1 位置1 @@ -4146,7 +4146,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 - * + * * @param array 数组对象 * @param index1 位置1 * @param index2 位置2 @@ -4162,7 +4162,7 @@ public class ArrayUtil { Array.set(array, index2, tmp); return array; } - + /** * 计算{@code null}或空元素对象的个数,通过{@link ObjectUtil#isEmpty(Object)} 判断元素 * @@ -4181,7 +4181,7 @@ public class ArrayUtil { } return count; } - + /** * 是否存在{@code null}或空对象,通过{@link ObjectUtil#isEmpty(Object)} 判断元素 * @@ -4199,7 +4199,7 @@ public class ArrayUtil { } return false; } - + /** * 是否存都为{@code null}或空对象,通过{@link ObjectUtil#isEmpty(Object)} 判断元素 * @@ -4221,7 +4221,7 @@ public class ArrayUtil { public static boolean isAllNotEmpty(Object... args) { return false == hasEmpty(args); } - + /** * 去重数组中的元素,去重后生成新的数组,原数组不变
* 此方法通过{@link LinkedHashSet} 去重 @@ -4235,9 +4235,32 @@ public class ArrayUtil { if(isEmpty(array)) { return array; } - + final Set set = new LinkedHashSet<>(array.length, 1); Collections.addAll(set, array); return toArray(set, (Class)getComponentType(array)); } + + + + + /** + * 多个字段是否全部不为null + * + * @param 数组元素类型 + * @param array 被检查的数组 + * @return 多个字段是否全部不为null + * @since 5.3.11 + */ + @SuppressWarnings("unchecked") + public static boolean isAllNotNull(T... array) { + if (isNotEmpty(array)) { + for (T element : array) { + if (null == element) { + return false; + } + } + } + return true; + } } diff --git a/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java index e9df98f16..2fb31983a 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/ArrayUtilTest.java @@ -289,4 +289,12 @@ public class ArrayUtilTest { final int[] ints = ArrayUtil.addAll(new int[]{1, 2, 3}, new int[]{4, 5, 6}); Assert.assertArrayEquals(new int[]{1,2,3,4,5,6}, ints); } + + @Test + public void isAllNotNullTest(){ + String[] allNotNull = {"aa", "bb", "cc", "dd", "bb", "dd"}; + Assert.assertTrue(ArrayUtil.isAllNotNull(allNotNull)); + String[] hasNull = {"aa", "bb", "cc", null, "bb", "dd"}; + Assert.assertFalse(ArrayUtil.isAllNotNull(hasNull)); + } }