From 594fc169606ced76c0800a984fb6ae5e56772b96 Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 7 Aug 2020 17:52:57 +0800 Subject: [PATCH] add method --- CHANGELOG.md | 1 + .../java/cn/hutool/core/util/ArrayUtil.java | 496 +++++++++--------- 2 files changed, 247 insertions(+), 250 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76c155fb7..460d41f2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * 【core 】 修改UUID正则,更加严谨(issue#I1Q1IW@Gitee) * 【core 】 ArrayUtil增加isAllNull方法(issue#1004@Github) * 【core 】 CollUtil增加contains方法(pr#152@Gitee) +* 【core 】 ArrayUtil增加isAllNotNull方法(pr#1008@Github) ### Bug修复# * 【core 】 修复原始类型转换时,转换失败没有抛出异常的问题 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 951d20f21..999fc0b65 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 @@ -16,18 +16,20 @@ import java.util.*; * 数组工具类 * * @author Looly - * */ public class ArrayUtil { - /** 数组中元素未找到的下标,值为-1 */ + /** + * 数组中元素未找到的下标,值为-1 + */ public static final int INDEX_NOT_FOUND = -1; // ---------------------------------------------------------------------- isEmpty + /** * 数组是否为空 * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 数组 * @return 是否为空 */ @@ -38,13 +40,13 @@ public class ArrayUtil { /** * 如果给定数组为空,返回默认数组 * - * @param 数组元素类型 - * @param array 数组 + * @param 数组元素类型 + * @param array 数组 * @param defaultArray 默认数组 * @return 非空(empty)的原数组或默认数组 * @since 4.6.9 */ - public static T[] defaultIfEmpty(T[] array, T[] defaultArray){ + public static T[] defaultIfEmpty(T[] array, T[] defaultArray) { return isEmpty(array) ? defaultArray : array; } @@ -148,14 +150,15 @@ public class ArrayUtil { } // ---------------------------------------------------------------------- isNotEmpty + /** * 数组是否为非空 * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 数组 * @return 是否为非空 */ - public static boolean isNotEmpty( T[] array) { + public static boolean isNotEmpty(T[] array) { return (array != null && array.length != 0); } @@ -255,7 +258,7 @@ public class ArrayUtil { /** * 是否包含{@code null}元素 * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 被检查的数组 * @return 是否包含{@code null}元素 * @since 3.0.7 @@ -275,11 +278,11 @@ public class ArrayUtil { /** * 多个字段是否全为null * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 被检查的数组 * @return 多个字段是否全为null - * @since 5.4.0 * @author dahuoyzs + * @since 5.4.0 */ @SuppressWarnings("unchecked") public static boolean isAllNull(T... array) { @@ -289,7 +292,7 @@ public class ArrayUtil { /** * 返回数组中第一个非空元素 * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 数组 * @return 非空元素,如果不存在非空元素或数组为空,返回{@code null} * @since 3.0.7 @@ -309,9 +312,9 @@ public class ArrayUtil { /** * 新建一个空数组 * - * @param 数组元素类型 + * @param 数组元素类型 * @param componentType 元素类型 - * @param newSize 大小 + * @param newSize 大小 * @return 空数组 */ @SuppressWarnings("unchecked") @@ -369,10 +372,10 @@ public class ArrayUtil { * 强制转换的前提是数组元素类型可被强制转换
* 强制转换后会生成一个新数组 * - * @param type 数组类型或数组元素类型 + * @param type 数组类型或数组元素类型 * @param arrayObj 原数组 * @return 转换后的数组类型 - * @throws NullPointerException 提供参数为空 + * @throws NullPointerException 提供参数为空 * @throws IllegalArgumentException 参数arrayObj不是数组 * @since 3.0.6 */ @@ -398,14 +401,14 @@ public class ArrayUtil { * 将新元素添加到已有数组中
* 添加新元素会生成一个新的数组,不影响原数组 * - * @param 数组元素类型 - * @param buffer 已有数组 + * @param 数组元素类型 + * @param buffer 已有数组 * @param newElements 新元素 * @return 新数组 */ @SafeVarargs public static T[] append(T[] buffer, T... newElements) { - if(isEmpty(buffer)) { + if (isEmpty(buffer)) { return newElements; } return insert(buffer, buffer.length, newElements); @@ -415,14 +418,14 @@ public class ArrayUtil { * 将新元素添加到已有数组中
* 添加新元素会生成一个新的数组,不影响原数组 * - * @param 数组元素类型 - * @param array 已有数组 + * @param 数组元素类型 + * @param array 已有数组 * @param newElements 新元素 * @return 新数组 */ @SafeVarargs public static Object append(Object array, T... newElements) { - if(isEmpty(array)) { + if (isEmpty(array)) { return newElements; } return insert(array, length(array), newElements); @@ -431,18 +434,18 @@ public class ArrayUtil { /** * 将元素值设置为数组的某个位置,当给定的index大于数组长度,则追加 * - * @param 数组元素类型 + * @param 数组元素类型 * @param buffer 已有数组 - * @param index 位置,大于长度追加,否则替换 - * @param value 新值 + * @param index 位置,大于长度追加,否则替换 + * @param value 新值 * @return 新数组或原有数组 * @since 4.1.2 */ public static T[] setOrAppend(T[] buffer, int index, T value) { - if(index < buffer.length) { + if (index < buffer.length) { Array.set(buffer, index, value); return buffer; - }else { + } else { return append(buffer, value); } } @@ -457,10 +460,10 @@ public class ArrayUtil { * @since 4.1.2 */ public static Object setOrAppend(Object array, int index, Object value) { - if(index < length(array)) { + if (index < length(array)) { Array.set(array, index, value); return array; - }else { + } else { return append(array, value); } } @@ -470,16 +473,16 @@ public class ArrayUtil { * 添加新元素会生成一个新的数组,不影响原数组
* 如果插入位置为为负数,从原数组从后向前计数,若大于原数组长度,则空白处用null填充 * - * @param 数组元素类型 - * @param buffer 已有数组 - * @param index 插入位置,此位置为对应此位置元素之前的空档 + * @param 数组元素类型 + * @param buffer 已有数组 + * @param index 插入位置,此位置为对应此位置元素之前的空档 * @param newElements 新元素 * @return 新数组 * @since 4.0.8 */ @SuppressWarnings("unchecked") public static T[] insert(T[] buffer, int index, T... newElements) { - return (T[]) insert((Object)buffer, index, newElements); + return (T[]) insert((Object) buffer, index, newElements); } /** @@ -487,9 +490,9 @@ public class ArrayUtil { * 添加新元素会生成一个新的数组,不影响原数组
* 如果插入位置为为负数,从原数组从后向前计数,若大于原数组长度,则空白处用null填充 * - * @param 数组元素类型 - * @param array 已有数组 - * @param index 插入位置,此位置为对应此位置元素之前的空档 + * @param 数组元素类型 + * @param array 已有数组 + * @param index 插入位置,此位置为对应此位置元素之前的空档 * @param newElements 新元素 * @return 新数组 * @since 4.0.8 @@ -499,7 +502,7 @@ public class ArrayUtil { if (isEmpty(newElements)) { return array; } - if(isEmpty(array)) { + if (isEmpty(array)) { return newElements; } @@ -521,14 +524,14 @@ public class ArrayUtil { * 生成一个新的重新设置大小的数组
* 调整大小后拷贝原数组到新数组下。扩大则占位前N个位置,缩小则截断 * - * @param 数组元素类型 - * @param data 原数组 - * @param newSize 新的数组大小 + * @param 数组元素类型 + * @param data 原数组 + * @param newSize 新的数组大小 * @param componentType 数组元素类型 * @return 调整后的新数组 */ public static T[] resize(T[] data, int newSize, Class componentType) { - if(newSize < 0){ + if (newSize < 0) { return data; } @@ -543,13 +546,13 @@ public class ArrayUtil { * 生成一个新的重新设置大小的数组
* 调整大小后拷贝原数组到新数组下。扩大则占位前N个位置,其它位置补充0,缩小则截断 * - * @param array 原数组 + * @param array 原数组 * @param newSize 新的数组大小 * @return 调整后的新数组 * @since 4.6.7 */ public static Object resize(Object array, int newSize) { - if(newSize < 0){ + if (newSize < 0) { return array; } if (null == array) { @@ -568,13 +571,13 @@ public class ArrayUtil { * 生成一个新的重新设置大小的数组
* 调整大小后拷贝原数组到新数组下。扩大则占位前N个位置,其它位置补充0,缩小则截断 * - * @param bytes 原数组 + * @param bytes 原数组 * @param newSize 新的数组大小 * @return 调整后的新数组 * @since 4.6.7 */ public static byte[] resize(byte[] bytes, int newSize) { - if(newSize < 0){ + if (newSize < 0) { return bytes; } final byte[] newArray = new byte[newSize]; @@ -588,8 +591,8 @@ public class ArrayUtil { * 生成一个新的重新设置大小的数组
* 新数组的类型为原数组的类型,调整大小后拷贝原数组到新数组下。扩大则占位前N个位置,缩小则截断 * - * @param 数组元素类型 - * @param buffer 原数组 + * @param 数组元素类型 + * @param buffer 原数组 * @param newSize 新的数组大小 * @return 调整后的新数组 */ @@ -601,7 +604,7 @@ public class ArrayUtil { * 将多个数组合并在一起
* 忽略null的数组 * - * @param 数组元素类型 + * @param 数组元素类型 * @param arrays 数组集合 * @return 合并后的数组 */ @@ -889,11 +892,11 @@ public class ArrayUtil { * 包装 {@link System#arraycopy(Object, int, Object, int, int)}
* 数组复制 * - * @param src 源数组 - * @param srcPos 源数组开始位置 - * @param dest 目标数组 + * @param src 源数组 + * @param srcPos 源数组开始位置 + * @param dest 目标数组 * @param destPos 目标数组开始位置 - * @param length 拷贝数组长度 + * @param length 拷贝数组长度 * @return 目标数组 * @since 3.0.6 */ @@ -907,8 +910,8 @@ public class ArrayUtil { * 包装 {@link System#arraycopy(Object, int, Object, int, int)}
* 数组复制,缘数组和目标数组都是从位置0开始复制 * - * @param src 源数组 - * @param dest 目标数组 + * @param src 源数组 + * @param dest 目标数组 * @param length 拷贝数组长度 * @return 目标数组 * @since 3.0.6 @@ -922,7 +925,7 @@ public class ArrayUtil { /** * 克隆数组 * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 被克隆的数组 * @return 新数组 */ @@ -977,7 +980,7 @@ public class ArrayUtil { * 自动判定正序反序 * * @param includedStart 开始的数字(包含) - * @param excludedEnd 结束的数字(不包含) + * @param excludedEnd 结束的数字(不包含) * @return 数字列表 */ public static int[] range(int includedStart, int excludedEnd) { @@ -989,8 +992,8 @@ public class ArrayUtil { * 自动判定正序反序 * * @param includedStart 开始的数字(包含) - * @param excludedEnd 结束的数字(不包含) - * @param step 步进 + * @param excludedEnd 结束的数字(不包含) + * @param step 步进 * @return 数字列表 */ public static int[] range(int includedStart, int excludedEnd, int step) { @@ -1021,7 +1024,7 @@ public class ArrayUtil { * 拆分byte数组为几个等份(最后一份可能小于len) * * @param array 数组 - * @param len 每个小节的长度 + * @param len 每个小节的长度 * @return 拆分后的数组 */ public static byte[][] split(byte[] array, int len) { @@ -1054,8 +1057,8 @@ public class ArrayUtil { * 2、修改元素对象,返回集合中为修改后的对象 * * - * @param 数组元素类型 - * @param array 数组 + * @param 数组元素类型 + * @param array 数组 * @param editor 编辑器接口 * @return 过滤后的数组 */ @@ -1078,16 +1081,16 @@ public class ArrayUtil { *
 	 * 1、修改元素对象,返回集合中为修改后的对象
 	 * 
- * + *

* 注意:此方法会修改原数组! * - * @param 数组元素类型 - * @param array 数组 + * @param 数组元素类型 + * @param array 数组 * @param editor 编辑器接口 * @since 5.3.3 */ public static void edit(T[] array, Editor editor) { - for(int i = 0; i < array.length; i++){ + for (int i = 0; i < array.length; i++) { array[i] = editor.edit(array[i]); } } @@ -1100,14 +1103,14 @@ public class ArrayUtil { * 1、过滤出需要的对象,{@link Filter#accept(Object)}方法返回true的对象将被加入结果集合中 * * - * @param 数组元素类型 - * @param array 数组 + * @param 数组元素类型 + * @param array 数组 * @param filter 过滤器接口,用于定义过滤规则,null表示不过滤,返回原数组 * @return 过滤后的数组 * @since 3.2.1 */ public static T[] filter(T[] array, Filter filter) { - if(null == filter) { + if (null == filter) { return array; } @@ -1124,7 +1127,7 @@ public class ArrayUtil { /** * 去除{@code null} 元素 * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 数组 * @return 处理后的数组 * @since 3.2.2 @@ -1139,7 +1142,7 @@ public class ArrayUtil { /** * 去除{@code null}或者"" 元素 * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 数组 * @return 处理后的数组 * @since 3.2.2 @@ -1151,7 +1154,7 @@ public class ArrayUtil { /** * 去除{@code null}或者""或者空白字符串 元素 * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 数组 * @return 处理后的数组 * @since 3.2.2 @@ -1179,10 +1182,10 @@ public class ArrayUtil { * 则得到的Map是 {a=1, b=2, c=3, d=4}
* 如果两个数组长度不同,则只对应最短部分 * - * @param Key类型 - * @param Value类型 - * @param keys 键列表 - * @param values 值列表 + * @param Key类型 + * @param Value类型 + * @param keys 键列表 + * @param values 值列表 * @param isOrder 是否有序 * @return Map * @since 3.0.4 @@ -1209,9 +1212,9 @@ public class ArrayUtil { * 则得到的Map是 {a=1, b=2, c=3, d=4}
* 如果两个数组长度不同,则只对应最短部分 * - * @param Key类型 - * @param Value类型 - * @param keys 键列表 + * @param Key类型 + * @param Value类型 + * @param keys 键列表 * @param values 值列表 * @return Map */ @@ -1220,10 +1223,11 @@ public class ArrayUtil { } // ------------------------------------------------------------------- indexOf and lastIndexOf and contains + /** * 返回数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} * - * @param 数组类型 + * @param 数组类型 * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1262,7 +1266,7 @@ public class ArrayUtil { /** * 返回数组中指定元素所在最后的位置,未找到返回{@link #INDEX_NOT_FOUND} * - * @param 数组类型 + * @param 数组类型 * @param array 数组 * @param value 被检查的元素 * @return 数组中指定元素所在位置,未找到返回{@link #INDEX_NOT_FOUND} @@ -1282,8 +1286,7 @@ public class ArrayUtil { /** * 数组中是否包含元素 * - * @param 数组元素类型 - * + * @param 数组元素类型 * @param array 数组 * @param value 被检查的元素 * @return 是否包含 @@ -1295,9 +1298,8 @@ public class ArrayUtil { /** * 数组中是否包含指定元素中的任意一个 * - * @param 数组元素类型 - * - * @param array 数组 + * @param 数组元素类型 + * @param array 数组 * @param values 被检查的多个元素 * @return 是否包含指定元素中的任意一个 * @since 4.1.20 @@ -1305,7 +1307,7 @@ public class ArrayUtil { @SuppressWarnings("unchecked") public static boolean containsAny(T[] array, T... values) { for (T value : values) { - if(contains(array, value)) { + if (contains(array, value)) { return true; } } @@ -1725,6 +1727,7 @@ public class ArrayUtil { } // ------------------------------------------------------------------- Wrap and unwrap + /** * 将原始类型数组包装为包装类型 * @@ -1896,7 +1899,7 @@ public class ArrayUtil { final byte[] array = new byte[length]; for (int i = 0; i < length; i++) { - array[i] = ObjectUtil.defaultIfNull(values[i], (byte)0); + array[i] = ObjectUtil.defaultIfNull(values[i], (byte) 0); } return array; } @@ -1940,7 +1943,7 @@ public class ArrayUtil { final short[] array = new short[length]; for (int i = 0; i < length; i++) { - array[i] = ObjectUtil.defaultIfNull(values[i], (short)0); + array[i] = ObjectUtil.defaultIfNull(values[i], (short) 0); } return array; } @@ -2094,24 +2097,24 @@ public class ArrayUtil { } catch (Exception e) { final String className = obj.getClass().getComponentType().getName(); switch (className) { - case "long": - return wrap((long[]) obj); - case "int": - return wrap((int[]) obj); - case "short": - return wrap((short[]) obj); - case "char": - return wrap((char[]) obj); - case "byte": - return wrap((byte[]) obj); - case "boolean": - return wrap((boolean[]) obj); - case "float": - return wrap((float[]) obj); - case "double": - return wrap((double[]) obj); - default: - throw new UtilException(e); + case "long": + return wrap((long[]) obj); + case "int": + return wrap((int[]) obj); + case "short": + return wrap((short[]) obj); + case "char": + return wrap((char[]) obj); + case "byte": + return wrap((byte[]) obj); + case "boolean": + return wrap((boolean[]) obj); + case "float": + return wrap((float[]) obj); + case "double": + return wrap((double[]) obj); + default: + throw new UtilException(e); } } } @@ -2136,7 +2139,7 @@ public class ArrayUtil { * 获取数组对象中指定index的值,支持负数,例如-1表示倒数第一个值
* 如果数组下标越界,返回null * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 数组对象 * @param index 下标,支持负数 * @return 值 @@ -2144,7 +2147,7 @@ public class ArrayUtil { */ @SuppressWarnings("unchecked") public static T get(Object array, int index) { - if(null == array) { + if (null == array) { return null; } @@ -2161,13 +2164,13 @@ public class ArrayUtil { /** * 获取数组中指定多个下标元素值,组成新数组 * - * @param 数组元素类型 - * @param array 数组 + * @param 数组元素类型 + * @param array 数组 * @param indexes 下标列表 * @return 结果 */ public static T[] getAny(Object array, int... indexes) { - if(null == array) { + if (null == array) { return null; } @@ -2181,13 +2184,13 @@ public class ArrayUtil { /** * 获取子数组 * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 数组 * @param start 开始位置(包括) - * @param end 结束位置(不包括) + * @param end 结束位置(不包括) * @return 新的数组 - * @since 4.2.2 * @see Arrays#copyOfRange(Object[], int, int) + * @since 4.2.2 */ public static T[] sub(T[] array, int start, int end) { int length = length(array); @@ -2219,10 +2222,10 @@ public class ArrayUtil { * * @param array 数组 * @param start 开始位置(包括) - * @param end 结束位置(不包括) + * @param end 结束位置(不包括) * @return 新的数组 - * @since 4.5.2 * @see Arrays#copyOfRange(Object[], int, int) + * @since 4.5.2 */ public static byte[] sub(byte[] array, int start, int end) { int length = length(array); @@ -2254,10 +2257,10 @@ public class ArrayUtil { * * @param array 数组 * @param start 开始位置(包括) - * @param end 结束位置(不包括) + * @param end 结束位置(不包括) * @return 新的数组 - * @since 4.5.2 * @see Arrays#copyOfRange(Object[], int, int) + * @since 4.5.2 */ public static int[] sub(int[] array, int start, int end) { int length = length(array); @@ -2289,10 +2292,10 @@ public class ArrayUtil { * * @param array 数组 * @param start 开始位置(包括) - * @param end 结束位置(不包括) + * @param end 结束位置(不包括) * @return 新的数组 - * @since 4.5.2 * @see Arrays#copyOfRange(Object[], int, int) + * @since 4.5.2 */ public static long[] sub(long[] array, int start, int end) { int length = length(array); @@ -2324,10 +2327,10 @@ public class ArrayUtil { * * @param array 数组 * @param start 开始位置(包括) - * @param end 结束位置(不包括) + * @param end 结束位置(不包括) * @return 新的数组 - * @since 4.5.2 * @see Arrays#copyOfRange(Object[], int, int) + * @since 4.5.2 */ public static short[] sub(short[] array, int start, int end) { int length = length(array); @@ -2359,10 +2362,10 @@ public class ArrayUtil { * * @param array 数组 * @param start 开始位置(包括) - * @param end 结束位置(不包括) + * @param end 结束位置(不包括) * @return 新的数组 - * @since 4.5.2 * @see Arrays#copyOfRange(Object[], int, int) + * @since 4.5.2 */ public static char[] sub(char[] array, int start, int end) { int length = length(array); @@ -2394,10 +2397,10 @@ public class ArrayUtil { * * @param array 数组 * @param start 开始位置(包括) - * @param end 结束位置(不包括) + * @param end 结束位置(不包括) * @return 新的数组 - * @since 4.5.2 * @see Arrays#copyOfRange(Object[], int, int) + * @since 4.5.2 */ public static double[] sub(double[] array, int start, int end) { int length = length(array); @@ -2429,10 +2432,10 @@ public class ArrayUtil { * * @param array 数组 * @param start 开始位置(包括) - * @param end 结束位置(不包括) + * @param end 结束位置(不包括) * @return 新的数组 - * @since 4.5.2 * @see Arrays#copyOfRange(Object[], int, int) + * @since 4.5.2 */ public static float[] sub(float[] array, int start, int end) { int length = length(array); @@ -2464,10 +2467,10 @@ public class ArrayUtil { * * @param array 数组 * @param start 开始位置(包括) - * @param end 结束位置(不包括) + * @param end 结束位置(不包括) * @return 新的数组 - * @since 4.5.2 * @see Arrays#copyOfRange(Object[], int, int) + * @since 4.5.2 */ public static boolean[] sub(boolean[] array, int start, int end) { int length = length(array); @@ -2499,7 +2502,7 @@ public class ArrayUtil { * * @param array 数组 * @param start 开始位置(包括) - * @param end 结束位置(不包括) + * @param end 结束位置(不包括) * @return 新的数组 * @since 4.0.6 */ @@ -2512,8 +2515,8 @@ public class ArrayUtil { * * @param array 数组 * @param start 开始位置(包括) - * @param end 结束位置(不包括) - * @param step 步进 + * @param end 结束位置(不包括) + * @param step 步进 * @return 新的数组 * @since 4.0.6 */ @@ -2563,21 +2566,21 @@ public class ArrayUtil { return null; } - if(obj instanceof long[]){ + if (obj instanceof long[]) { return Arrays.toString((long[]) obj); - } else if(obj instanceof int[]){ + } else if (obj instanceof int[]) { return Arrays.toString((int[]) obj); - } else if(obj instanceof short[]){ + } else if (obj instanceof short[]) { return Arrays.toString((short[]) obj); - } else if(obj instanceof char[]){ + } else if (obj instanceof char[]) { return Arrays.toString((char[]) obj); - } else if(obj instanceof byte[]){ + } else if (obj instanceof byte[]) { return Arrays.toString((byte[]) obj); - } else if(obj instanceof boolean[]){ + } else if (obj instanceof boolean[]) { return Arrays.toString((boolean[]) obj); - } else if(obj instanceof float[]){ + } else if (obj instanceof float[]) { return Arrays.toString((float[]) obj); - } else if(obj instanceof double[]){ + } else if (obj instanceof double[]) { return Arrays.toString((double[]) obj); } else if (ArrayUtil.isArray(obj)) { // 对象数组 @@ -2607,8 +2610,8 @@ public class ArrayUtil { * @param array 数组对象 * @return 数组长度 * @throws IllegalArgumentException 如果参数不为数组,抛出此异常 - * @since 3.0.8 * @see Array#getLength(Object) + * @since 3.0.8 */ public static int length(Object array) throws IllegalArgumentException { if (null == array) { @@ -2620,8 +2623,8 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param 被处理的集合 - * @param array 数组 + * @param 被处理的集合 + * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 */ @@ -2632,11 +2635,11 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param 被处理的集合 - * @param array 数组 + * @param 被处理的集合 + * @param array 数组 * @param conjunction 分隔符 - * @param prefix 每个元素添加的前缀,null表示不添加 - * @param suffix 每个元素添加的后缀,null表示不添加 + * @param prefix 每个元素添加的前缀,null表示不添加 + * @param suffix 每个元素添加的后缀,null表示不添加 * @return 连接后的字符串 * @since 4.0.10 */ @@ -2669,10 +2672,10 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param 被处理的集合 - * @param array 数组 + * @param 被处理的集合 + * @param array 数组 * @param conjunction 分隔符 - * @param editor 每个元素的编辑器,null表示不编辑 + * @param editor 每个元素的编辑器,null表示不编辑 * @return 连接后的字符串 * @since 5.3.3 */ @@ -2689,10 +2692,10 @@ public class ArrayUtil { } else { sb.append(conjunction); } - if(null != editor){ + if (null != editor) { item = editor.edit(item); } - if(null != item){ + if (null != item) { sb.append(StrUtil.toString(item)); } } @@ -2702,7 +2705,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param array 数组 + * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 */ @@ -2727,7 +2730,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param array 数组 + * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 */ @@ -2752,7 +2755,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param array 数组 + * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 */ @@ -2777,7 +2780,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param array 数组 + * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 */ @@ -2802,7 +2805,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param array 数组 + * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 */ @@ -2827,7 +2830,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param array 数组 + * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 */ @@ -2852,7 +2855,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param array 数组 + * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 */ @@ -2877,7 +2880,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param array 数组 + * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 */ @@ -2902,7 +2905,7 @@ public class ArrayUtil { /** * 以 conjunction 为分隔符将数组转换为字符串 * - * @param array 数组 + * @param array 数组 * @param conjunction 分隔符 * @return 连接后的字符串 */ @@ -2912,24 +2915,24 @@ public class ArrayUtil { if (componentType.isPrimitive()) { final String componentTypeName = componentType.getName(); switch (componentTypeName) { - case "long": - return join((long[]) array, conjunction); - case "int": - return join((int[]) array, conjunction); - case "short": - return join((short[]) array, conjunction); - case "char": - return join((char[]) array, conjunction); - case "byte": - return join((byte[]) array, conjunction); - case "boolean": - return join((boolean[]) array, conjunction); - case "float": - return join((float[]) array, conjunction); - case "double": - return join((double[]) array, conjunction); - default: - throw new UtilException("Unknown primitive type: [{}]", componentTypeName); + case "long": + return join((long[]) array, conjunction); + case "int": + return join((int[]) array, conjunction); + case "short": + return join((short[]) array, conjunction); + case "char": + return join((char[]) array, conjunction); + case "byte": + return join((byte[]) array, conjunction); + case "boolean": + return join((boolean[]) array, conjunction); + case "float": + return join((float[]) array, conjunction); + case "double": + return join((double[]) array, conjunction); + default: + throw new UtilException("Unknown primitive type: [{}]", componentTypeName); } } else { return join((Object[]) array, conjunction); @@ -2962,8 +2965,8 @@ public class ArrayUtil { /** * 将集合转为数组 * - * @param 数组元素类型 - * @param iterator {@link Iterator} + * @param 数组元素类型 + * @param iterator {@link Iterator} * @param componentType 集合元素类型 * @return 数组 * @since 3.0.9 @@ -2975,8 +2978,8 @@ public class ArrayUtil { /** * 将集合转为数组 * - * @param 数组元素类型 - * @param iterable {@link Iterable} + * @param 数组元素类型 + * @param iterable {@link Iterable} * @param componentType 集合元素类型 * @return 数组 * @since 3.0.9 @@ -2988,8 +2991,8 @@ public class ArrayUtil { /** * 将集合转为数组 * - * @param 数组元素类型 - * @param collection 集合 + * @param 数组元素类型 + * @param collection 集合 * @param componentType 集合元素类型 * @return 数组 * @since 3.0.9 @@ -2999,12 +3002,12 @@ public class ArrayUtil { } // ---------------------------------------------------------------------- remove + /** * 移除数组中对应位置的元素
* copy from commons-lang * - * @param 数组元素类型 - * + * @param 数组元素类型 * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param index 位置,如果位置小于0或者大于长度,返回原数组 * @return 去掉指定元素后的新数组或原数组 @@ -3159,12 +3162,13 @@ public class ArrayUtil { } // ---------------------------------------------------------------------- remove + /** * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang * - * @param 数组元素类型 - * @param array 数组对象,可以是对象数组,也可以原始类型数组 + * @param 数组元素类型 + * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 * @throws IllegalArgumentException 参数对象不为数组对象 @@ -3178,7 +3182,7 @@ public class ArrayUtil { * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang * - * @param array 数组对象,可以是对象数组,也可以原始类型数组 + * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 * @throws IllegalArgumentException 参数对象不为数组对象 @@ -3192,7 +3196,7 @@ public class ArrayUtil { * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang * - * @param array 数组对象,可以是对象数组,也可以原始类型数组 + * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 * @throws IllegalArgumentException 参数对象不为数组对象 @@ -3206,7 +3210,7 @@ public class ArrayUtil { * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang * - * @param array 数组对象,可以是对象数组,也可以原始类型数组 + * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 * @throws IllegalArgumentException 参数对象不为数组对象 @@ -3220,7 +3224,7 @@ public class ArrayUtil { * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang * - * @param array 数组对象,可以是对象数组,也可以原始类型数组 + * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 * @throws IllegalArgumentException 参数对象不为数组对象 @@ -3234,7 +3238,7 @@ public class ArrayUtil { * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang * - * @param array 数组对象,可以是对象数组,也可以原始类型数组 + * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 * @throws IllegalArgumentException 参数对象不为数组对象 @@ -3248,7 +3252,7 @@ public class ArrayUtil { * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang * - * @param array 数组对象,可以是对象数组,也可以原始类型数组 + * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 * @throws IllegalArgumentException 参数对象不为数组对象 @@ -3262,7 +3266,7 @@ public class ArrayUtil { * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang * - * @param array 数组对象,可以是对象数组,也可以原始类型数组 + * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 * @throws IllegalArgumentException 参数对象不为数组对象 @@ -3276,7 +3280,7 @@ public class ArrayUtil { * 移除数组中指定的元素
* 只会移除匹配到的第一个元素 copy from commons-lang * - * @param array 数组对象,可以是对象数组,也可以原始类型数组 + * @param array 数组对象,可以是对象数组,也可以原始类型数组 * @param element 要移除的元素 * @return 去掉指定元素后的新数组或原数组 * @throws IllegalArgumentException 参数对象不为数组对象 @@ -3291,10 +3295,10 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 * - * @param 数组元素类型 - * @param array 数组,会变更 + * @param 数组元素类型 + * @param array 数组,会变更 * @param startIndexInclusive 开始位置(包含) - * @param endIndexExclusive 结束位置(不包含) + * @param endIndexExclusive 结束位置(不包含) * @return 变更后的原数组 * @since 3.0.9 */ @@ -3318,7 +3322,7 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 数组,会变更 * @return 变更后的原数组 * @since 3.0.9 @@ -3330,9 +3334,9 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 * - * @param array 数组,会变更 + * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) - * @param endIndexExclusive 结束位置(不包含) + * @param endIndexExclusive 结束位置(不包含) * @return 变更后的原数组 * @since 3.0.9 */ @@ -3367,9 +3371,9 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 * - * @param array 数组,会变更 + * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) - * @param endIndexExclusive 结束位置(不包含) + * @param endIndexExclusive 结束位置(不包含) * @return 变更后的原数组 * @since 3.0.9 */ @@ -3404,9 +3408,9 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 * - * @param array 数组,会变更 + * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) - * @param endIndexExclusive 结束位置(不包含) + * @param endIndexExclusive 结束位置(不包含) * @return 变更后的原数组 * @since 3.0.9 */ @@ -3441,9 +3445,9 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 * - * @param array 数组,会变更 + * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) - * @param endIndexExclusive 结束位置(不包含) + * @param endIndexExclusive 结束位置(不包含) * @return 变更后的原数组 * @since 3.0.9 */ @@ -3478,9 +3482,9 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 * - * @param array 数组,会变更 + * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) - * @param endIndexExclusive 结束位置(不包含) + * @param endIndexExclusive 结束位置(不包含) * @return 变更后的原数组 * @since 3.0.9 */ @@ -3515,9 +3519,9 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 * - * @param array 数组,会变更 + * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) - * @param endIndexExclusive 结束位置(不包含) + * @param endIndexExclusive 结束位置(不包含) * @return 变更后的原数组 * @since 3.0.9 */ @@ -3552,9 +3556,9 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 * - * @param array 数组,会变更 + * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) - * @param endIndexExclusive 结束位置(不包含) + * @param endIndexExclusive 结束位置(不包含) * @return 变更后的原数组 * @since 3.0.9 */ @@ -3589,9 +3593,9 @@ public class ArrayUtil { /** * 反转数组,会变更原数组 * - * @param array 数组,会变更 + * @param array 数组,会变更 * @param startIndexInclusive 其实位置(包含) - * @param endIndexExclusive 结束位置(不包含) + * @param endIndexExclusive 结束位置(不包含) * @return 变更后的原数组 * @since 3.0.9 */ @@ -3624,10 +3628,11 @@ public class ArrayUtil { } // ------------------------------------------------------------------------------------------------------------ min and max + /** * 取最小值 * - * @param 元素类型 + * @param 元素类型 * @param numberArray 数字数组 * @return 最小值 * @since 3.0.9 @@ -3639,9 +3644,9 @@ public class ArrayUtil { /** * 取最小值 * - * @param 元素类型 + * @param 元素类型 * @param numberArray 数字数组 - * @param comparator 比较器,null按照默认比较 + * @param comparator 比较器,null按照默认比较 * @return 最小值 * @since 5.3.4 */ @@ -3801,7 +3806,7 @@ public class ArrayUtil { /** * 取最大值 * - * @param 元素类型 + * @param 元素类型 * @param numberArray 数字数组 * @return 最大值 * @since 3.0.9 @@ -3813,9 +3818,9 @@ public class ArrayUtil { /** * 取最大值 * - * @param 元素类型 + * @param 元素类型 * @param numberArray 数字数组 - * @param comparator 比较器,null表示默认比较器 + * @param comparator 比较器,null表示默认比较器 * @return 最大值 * @since 5.3.4 */ @@ -3975,7 +3980,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 * - * @param array 数组 + * @param array 数组 * @param index1 位置1 * @param index2 位置2 * @return 交换后的数组,与传入数组为同一对象 @@ -3994,7 +3999,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 * - * @param array 数组 + * @param array 数组 * @param index1 位置1 * @param index2 位置2 * @return 交换后的数组,与传入数组为同一对象 @@ -4013,7 +4018,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 * - * @param array 数组 + * @param array 数组 * @param index1 位置1 * @param index2 位置2 * @return 交换后的数组,与传入数组为同一对象 @@ -4032,7 +4037,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 * - * @param array 数组 + * @param array 数组 * @param index1 位置1 * @param index2 位置2 * @return 交换后的数组,与传入数组为同一对象 @@ -4051,7 +4056,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 * - * @param array 数组 + * @param array 数组 * @param index1 位置1 * @param index2 位置2 * @return 交换后的数组,与传入数组为同一对象 @@ -4070,7 +4075,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 * - * @param array 数组 + * @param array 数组 * @param index1 位置1 * @param index2 位置2 * @return 交换后的数组,与传入数组为同一对象 @@ -4089,7 +4094,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 * - * @param array 数组 + * @param array 数组 * @param index1 位置1 * @param index2 位置2 * @return 交换后的数组,与传入数组为同一对象 @@ -4108,7 +4113,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 * - * @param array 数组 + * @param array 数组 * @param index1 位置1 * @param index2 位置2 * @return 交换后的数组,与传入数组为同一对象 @@ -4127,8 +4132,8 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 * - * @param 元素类型 - * @param array 数组 + * @param 元素类型 + * @param array 数组 * @param index1 位置1 * @param index2 位置2 * @return 交换后的数组,与传入数组为同一对象 @@ -4147,7 +4152,7 @@ public class ArrayUtil { /** * 交换数组中两个位置的值 * - * @param array 数组对象 + * @param array 数组对象 * @param index1 位置1 * @param index2 位置2 * @return 交换后的数组,与传入数组为同一对象 @@ -4226,41 +4231,32 @@ public class ArrayUtil { * 去重数组中的元素,去重后生成新的数组,原数组不变
* 此方法通过{@link LinkedHashSet} 去重 * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 数组 * @return 去重后的数组 */ @SuppressWarnings("unchecked") public static T[] distinct(T[] array) { - if(isEmpty(array)) { + if (isEmpty(array)) { return array; } final Set set = new LinkedHashSet<>(array.length, 1); Collections.addAll(set, array); - return toArray(set, (Class)getComponentType(array)); + return toArray(set, (Class) getComponentType(array)); } - - /** * 多个字段是否全部不为null * - * @param 数组元素类型 + * @param 数组元素类型 * @param array 被检查的数组 * @return 多个字段是否全部不为null - * @since 5.3.11 + * @since 5.4.0 */ @SuppressWarnings("unchecked") public static boolean isAllNotNull(T... array) { - if (isNotEmpty(array)) { - for (T element : array) { - if (null == element) { - return false; - } - } - } - return true; + return false == hasNull(array); } }