cn.buli_home.utils.common.ArrayUtils Maven / Gradle / Ivy
package cn.buli_home.utils.common;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Objects;
public class ArrayUtils extends BasicArrayUtils {
/**
* 数组是否为空
*
* @param 数组元素类型
* @param array 数组
* @return 是否为空
*/
public static boolean isEmpty(T[] array) {
return Objects.isNull(array) || array.length == 0;
}
/**
* 如果给定数组为空,返回默认数组
*
* @param 数组元素类型
* @param array 数组
* @param defaultArray 默认数组
* @return 非空(empty)的原数组或默认数组
*
*/
public static T[] defaultIfEmpty(T[] array, T[] defaultArray) {
return isEmpty(array) ? defaultArray : array;
}
/**
* 数组是否为空
* 此方法会匹配单一对象,如果此对象为{@code null}则返回true
* 如果此对象为非数组,理解为此对象为数组的第一个元素,则返回false
* 如果此对象为数组对象,数组长度大于0情况下返回false,否则返回true
*
* @param array 数组
* @return 是否为空
*/
public static boolean isEmpty(Object array) {
if (Objects.nonNull(array)) {
if (isArray(array)) {
return 0 == Array.getLength(array);
}
return false;
}
return true;
}
/**
* 数组是否为非空
*
* @param 数组元素类型
* @param array 数组
* @return 是否为非空
*/
public static boolean isNotEmpty(T[] array) {
return (Objects.nonNull(array) && array.length != 0);
}
/**
* 数组是否为非空
* 此方法会匹配单一对象,如果此对象为{@code null}则返回false
* 如果此对象为非数组,理解为此对象为数组的第一个元素,则返回true
* 如果此对象为数组对象,数组长度大于0情况下返回true,否则返回false
*
* @param array 数组
* @return 是否为非空
*/
public static boolean isNotEmpty(Object array) {
return !isEmpty(array);
}
/**
* 是否包含{@code null}元素
*
* @param 数组元素类型
* @param array 被检查的数组
* @return 是否包含{@code null}元素
*
*/
@SuppressWarnings("unchecked")
public static boolean hasNull(T... array) {
if (isNotEmpty(array)) {
for (T element : array) {
if (Objects.isNull(element)) {
return true;
}
}
}
return Objects.isNull(array);
}
/**
* 对象是否为数组对象
*
* @param obj 对象
* @return 是否为数组对象,如果为{@code null} 返回false
*/
public static boolean isArray(Object obj) {
return Objects.nonNull(obj) && obj.getClass().isArray();
}
/**
* 数组或集合转String
*
* @param obj 集合或数组对象
* @return 数组字符串,与集合转字符串格式相同
*/
public static String toString(Object obj) {
if (null == obj) {
return null;
}
if (obj instanceof long[]) {
return Arrays.toString((long[]) obj);
} else if (obj instanceof int[]) {
return Arrays.toString((int[]) obj);
} else if (obj instanceof short[]) {
return Arrays.toString((short[]) obj);
} else if (obj instanceof char[]) {
return Arrays.toString((char[]) obj);
} else if (obj instanceof byte[]) {
return Arrays.toString((byte[]) obj);
} else if (obj instanceof boolean[]) {
return Arrays.toString((boolean[]) obj);
} else if (obj instanceof float[]) {
return Arrays.toString((float[]) obj);
} else if (obj instanceof double[]) {
return Arrays.toString((double[]) obj);
} else if (ArrayUtils.isArray(obj)) {
// 对象数组
try {
return Arrays.deepToString((Object[]) obj);
} catch (Exception ignore) {
//ignore
}
}
return obj.toString();
}
}