一、前言
参考hutool的hutool-all包的cn.hutool.core.util.ArrayUtil数组工具类,对数组非空校验、获取数组第一个非空数据、数组扩展复制&追加、多数组合并及分割拆分等。
二、代码说明
package cn.hutool.core.util;@b@@b@import cn.hutool.core.collection.CollectionUtil;@b@import cn.hutool.core.collection.IterUtil;@b@import cn.hutool.core.exceptions.UtilException;@b@import cn.hutool.core.lang.Editor;@b@import cn.hutool.core.lang.Filter;@b@import java.lang.reflect.Array;@b@import java.nio.ByteBuffer;@b@import java.util.ArrayList;@b@import java.util.Arrays;@b@import java.util.Collection;@b@import java.util.Iterator;@b@import java.util.Map;@b@@b@public class ArrayUtil {@b@ public static final int INDEX_NOT_FOUND = -1;@b@@b@ public ArrayUtil() {@b@ }@b@@b@ public static <T> boolean isEmpty(T... array) {@b@ return array == null || array.length == 0;@b@ }@b@@b@ public static boolean isEmpty(Object array) {@b@ if (null == array) {@b@ return true;@b@ } else if (isArray(array)) {@b@ return 0 == Array.getLength(array);@b@ } else {@b@ throw new UtilException("Object to provide is not a Array !");@b@ }@b@ }@b@@b@ public static boolean isEmpty(long... array) {@b@ return array == null || array.length == 0;@b@ }@b@@b@ public static boolean isEmpty(int... array) {@b@ return array == null || array.length == 0;@b@ }@b@@b@ public static boolean isEmpty(short... array) {@b@ return array == null || array.length == 0;@b@ }@b@@b@ public static boolean isEmpty(char... array) {@b@ return array == null || array.length == 0;@b@ }@b@@b@ public static boolean isEmpty(byte... array) {@b@ return array == null || array.length == 0;@b@ }@b@@b@ public static boolean isEmpty(double... array) {@b@ return array == null || array.length == 0;@b@ }@b@@b@ public static boolean isEmpty(float... array) {@b@ return array == null || array.length == 0;@b@ }@b@@b@ public static boolean isEmpty(boolean... array) {@b@ return array == null || array.length == 0;@b@ }@b@@b@ public static <T> boolean isNotEmpty(T... array) {@b@ return array != null && array.length != 0;@b@ }@b@@b@ public static boolean isNotEmpty(Object array) {@b@ return !isEmpty(array);@b@ }@b@@b@ public static boolean isNotEmpty(long... array) {@b@ return array != null && array.length != 0;@b@ }@b@@b@ public static boolean isNotEmpty(int... array) {@b@ return array != null && array.length != 0;@b@ }@b@@b@ public static boolean isNotEmpty(short... array) {@b@ return array != null && array.length != 0;@b@ }@b@@b@ public static boolean isNotEmpty(char... array) {@b@ return array != null && array.length != 0;@b@ }@b@@b@ public static boolean isNotEmpty(byte... array) {@b@ return array != null && array.length != 0;@b@ }@b@@b@ public static boolean isNotEmpty(double... array) {@b@ return array != null && array.length != 0;@b@ }@b@@b@ public static boolean isNotEmpty(float... array) {@b@ return array != null && array.length != 0;@b@ }@b@@b@ public static boolean isNotEmpty(boolean... array) {@b@ return array != null && array.length != 0;@b@ }@b@@b@ public static <T> boolean hasNull(T... array) {@b@ if (isNotEmpty(array)) {@b@ Object[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ T element = arr$[i$];@b@ if (null == element) {@b@ return true;@b@ }@b@ }@b@ }@b@@b@ return false;@b@ }@b@@b@ public static <T> T firstNonNull(T... array) {@b@ if (isNotEmpty(array)) {@b@ Object[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ T val = arr$[i$];@b@ if (null != val) {@b@ return val;@b@ }@b@ }@b@ }@b@@b@ return null;@b@ }@b@@b@ public static <T> T[] newArray(Class<?> componentType, int newSize) {@b@ return (Object[])((Object[])Array.newInstance(componentType, newSize));@b@ }@b@@b@ public static Object[] newArray(int newSize) {@b@ return new Object[newSize];@b@ }@b@@b@ public static Class<?> getComponentType(Object array) {@b@ return null == array ? null : array.getClass().getComponentType();@b@ }@b@@b@ public static Class<?> getComponentType(Class<?> arrayClass) {@b@ return null == arrayClass ? null : arrayClass.getComponentType();@b@ }@b@@b@ public static Class<?> getArrayType(Class<?> componentType) {@b@ return Array.newInstance(componentType, 0).getClass();@b@ }@b@@b@ public static Object[] cast(Class<?> type, Object arrayObj) throws NullPointerException, IllegalArgumentException {@b@ if (null == arrayObj) {@b@ throw new NullPointerException("Argument [arrayObj] is null !");@b@ } else if (!arrayObj.getClass().isArray()) {@b@ throw new IllegalArgumentException("Argument [arrayObj] is not array !");@b@ } else if (null == type) {@b@ return (Object[])((Object[])arrayObj);@b@ } else {@b@ Class<?> componentType = type.isArray() ? type.getComponentType() : type;@b@ Object[] array = (Object[])((Object[])arrayObj);@b@ Object[] result = newArray(componentType, array.length);@b@ System.arraycopy(array, 0, result, 0, array.length);@b@ return result;@b@ }@b@ }@b@@b@ @SafeVarargs@b@ public static <T> T[] append(T[] buffer, T... newElements) {@b@ return isEmpty(buffer) ? newElements : insert(buffer, buffer.length, newElements);@b@ }@b@@b@ @SafeVarargs@b@ public static <T> Object append(Object array, T... newElements) {@b@ return isEmpty(array) ? newElements : insert(array, length(array), newElements);@b@ }@b@@b@ public static <T> T[] setOrAppend(T[] buffer, int index, T value) {@b@ if (index < buffer.length) {@b@ Array.set(buffer, index, value);@b@ return buffer;@b@ } else {@b@ return append(buffer, value);@b@ }@b@ }@b@@b@ public static Object setOrAppend(Object array, int index, Object value) {@b@ if (index < length(array)) {@b@ Array.set(array, index, value);@b@ return array;@b@ } else {@b@ return append(array, value);@b@ }@b@ }@b@@b@ public static <T> T[] insert(T[] buffer, int index, T... newElements) {@b@ return (Object[])((Object[])insert((Object)buffer, index, newElements));@b@ }@b@@b@ public static <T> Object insert(Object array, int index, T... newElements) {@b@ if (isEmpty(newElements)) {@b@ return array;@b@ } else if (isEmpty(array)) {@b@ return newElements;@b@ } else {@b@ int len = length(array);@b@ if (index < 0) {@b@ index = index % len + len;@b@ }@b@@b@ T[] result = newArray(array.getClass().getComponentType(), Math.max(len, index) + newElements.length);@b@ System.arraycopy(array, 0, result, 0, Math.min(len, index));@b@ System.arraycopy(newElements, 0, result, index, newElements.length);@b@ if (index < len) {@b@ System.arraycopy(array, index, result, index + newElements.length, len - index);@b@ }@b@@b@ return result;@b@ }@b@ }@b@@b@ public static <T> T[] resize(T[] buffer, int newSize, Class<?> componentType) {@b@ T[] newArray = newArray(componentType, newSize);@b@ if (isNotEmpty(buffer)) {@b@ System.arraycopy(buffer, 0, newArray, 0, Math.min(buffer.length, newSize));@b@ }@b@@b@ return newArray;@b@ }@b@@b@ public static <T> T[] resize(T[] buffer, int newSize) {@b@ return resize(buffer, newSize, buffer.getClass().getComponentType());@b@ }@b@@b@ @SafeVarargs@b@ public static <T> T[] addAll(T[]... arrays) {@b@ if (arrays.length == 1) {@b@ return arrays[0];@b@ } else {@b@ int length = 0;@b@ Object[][] arr$ = arrays;@b@ int len$ = arrays.length;@b@@b@ int len$;@b@ for(len$ = 0; len$ < len$; ++len$) {@b@ T[] array = arr$[len$];@b@ if (array != null) {@b@ length += array.length;@b@ }@b@ }@b@@b@ T[] result = newArray(arrays.getClass().getComponentType().getComponentType(), length);@b@ length = 0;@b@ Object[][] arr$ = arrays;@b@ len$ = arrays.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ T[] array = arr$[i$];@b@ if (array != null) {@b@ System.arraycopy(array, 0, result, length, array.length);@b@ length += array.length;@b@ }@b@ }@b@@b@ return result;@b@ }@b@ }@b@@b@ public static Object copy(Object src, int srcPos, Object dest, int destPos, int length) {@b@ System.arraycopy(src, srcPos, dest, destPos, length);@b@ return dest;@b@ }@b@@b@ public static Object copy(Object src, Object dest, int length) {@b@ System.arraycopy(src, 0, dest, 0, length);@b@ return dest;@b@ }@b@@b@ public static <T> T[] clone(T[] array) {@b@ return array == null ? null : (Object[])array.clone();@b@ }@b@@b@ public static <T> T clone(T obj) {@b@ if (null == obj) {@b@ return null;@b@ } else if (!isArray(obj)) {@b@ return null;@b@ } else {@b@ Class<?> componentType = obj.getClass().getComponentType();@b@ Object result;@b@ if (componentType.isPrimitive()) {@b@ int length = Array.getLength(obj);@b@ result = Array.newInstance(componentType, length);@b@@b@ while(length-- > 0) {@b@ Array.set(result, length, Array.get(obj, length));@b@ }@b@ } else {@b@ result = ((Object[])((Object[])obj)).clone();@b@ }@b@@b@ return result;@b@ }@b@ }@b@@b@ public static int[] range(int excludedEnd) {@b@ return range(0, excludedEnd, 1);@b@ }@b@@b@ public static int[] range(int includedStart, int excludedEnd) {@b@ return range(includedStart, excludedEnd, 1);@b@ }@b@@b@ public static int[] range(int includedStart, int excludedEnd, int step) {@b@ int deviation;@b@ if (includedStart > excludedEnd) {@b@ deviation = includedStart;@b@ includedStart = excludedEnd;@b@ excludedEnd = deviation;@b@ }@b@@b@ if (step <= 0) {@b@ step = 1;@b@ }@b@@b@ deviation = excludedEnd - includedStart;@b@ int length = deviation / step;@b@ if (deviation % step != 0) {@b@ ++length;@b@ }@b@@b@ int[] range = new int[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ range[i] = includedStart;@b@ includedStart += step;@b@ }@b@@b@ return range;@b@ }@b@@b@ public static byte[][] split(byte[] array, int len) {@b@ int x = array.length / len;@b@ int y = array.length % len;@b@ int z = 0;@b@ if (y != 0) {@b@ z = 1;@b@ }@b@@b@ byte[][] arrays = new byte[x + z][];@b@@b@ for(int i = 0; i < x + z; ++i) {@b@ byte[] arr = new byte[len];@b@ if (i == x + z - 1 && y != 0) {@b@ System.arraycopy(array, i * len, arr, 0, y);@b@ } else {@b@ System.arraycopy(array, i * len, arr, 0, len);@b@ }@b@@b@ arrays[i] = arr;@b@ }@b@@b@ return arrays;@b@ }@b@@b@ public static <T> T[] filter(T[] array, Editor<T> editor) {@b@ ArrayList<T> list = new ArrayList(array.length);@b@ Object[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ T t = arr$[i$];@b@ T modified = editor.edit(t);@b@ if (null != modified) {@b@ list.add(modified);@b@ }@b@ }@b@@b@ return list.toArray(Arrays.copyOf(array, list.size()));@b@ }@b@@b@ public static <T> T[] filter(T[] array, Filter<T> filter) {@b@ if (null == filter) {@b@ return array;@b@ } else {@b@ ArrayList<T> list = new ArrayList(array.length);@b@ Object[] result = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ T t = result[i$];@b@ if (filter.accept(t)) {@b@ list.add(t);@b@ }@b@ }@b@@b@ result = newArray(array.getClass().getComponentType(), list.size());@b@ return list.toArray(result);@b@ }@b@ }@b@@b@ public static <T> T[] removeNull(T[] array) {@b@ return filter(array, new Editor<T>() {@b@ public T edit(T t) {@b@ return t;@b@ }@b@ });@b@ }@b@@b@ public static <T extends CharSequence> T[] removeEmpty(T[] array) {@b@ return (CharSequence[])filter(array, (Filter)(new Filter<T>() {@b@ public boolean accept(T t) {@b@ return !StrUtil.isEmpty(t);@b@ }@b@ }));@b@ }@b@@b@ public static <T extends CharSequence> T[] removeBlank(T[] array) {@b@ return (CharSequence[])filter(array, (Filter)(new Filter<T>() {@b@ public boolean accept(T t) {@b@ return !StrUtil.isBlank(t);@b@ }@b@ }));@b@ }@b@@b@ public static String[] nullToEmpty(String[] array) {@b@ return (String[])filter(array, (Editor)(new Editor<String>() {@b@ public String edit(String t) {@b@ return null == t ? "" : t;@b@ }@b@ }));@b@ }@b@@b@ public static <K, V> Map<K, V> zip(K[] keys, V[] values, boolean isOrder) {@b@ if (!isEmpty(keys) && !isEmpty(values)) {@b@ int size = Math.min(keys.length, values.length);@b@ Map<K, V> map = CollectionUtil.newHashMap(size, isOrder);@b@@b@ for(int i = 0; i < size; ++i) {@b@ map.put(keys[i], values[i]);@b@ }@b@@b@ return map;@b@ } else {@b@ return null;@b@ }@b@ }@b@@b@ public static <K, V> Map<K, V> zip(K[] keys, V[] values) {@b@ return zip(keys, values, false);@b@ }@b@@b@ public static <T> int indexOf(T[] array, Object value) {@b@ if (null != array) {@b@ for(int i = 0; i < array.length; ++i) {@b@ if (ObjectUtil.equal(value, array[i])) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static int indexOfIgnoreCase(CharSequence[] array, CharSequence value) {@b@ if (null != array) {@b@ for(int i = 0; i < array.length; ++i) {@b@ if (StrUtil.equalsIgnoreCase(array[i], value)) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static <T> int lastIndexOf(T[] array, Object value) {@b@ if (null != array) {@b@ for(int i = array.length - 1; i >= 0; --i) {@b@ if (ObjectUtil.equal(value, array[i])) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static <T> boolean contains(T[] array, T value) {@b@ return indexOf(array, value) > -1;@b@ }@b@@b@ public static <T> boolean containsAny(T[] array, T... values) {@b@ Object[] arr$ = values;@b@ int len$ = values.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ T value = arr$[i$];@b@ if (contains(array, value)) {@b@ return true;@b@ }@b@ }@b@@b@ return false;@b@ }@b@@b@ public static boolean containsIgnoreCase(CharSequence[] array, CharSequence value) {@b@ return indexOfIgnoreCase(array, value) > -1;@b@ }@b@@b@ public static int indexOf(long[] array, long value) {@b@ if (null != array) {@b@ for(int i = 0; i < array.length; ++i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static int lastIndexOf(long[] array, long value) {@b@ if (null != array) {@b@ for(int i = array.length - 1; i >= 0; --i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static boolean contains(long[] array, long value) {@b@ return indexOf(array, value) > -1;@b@ }@b@@b@ public static int indexOf(int[] array, int value) {@b@ if (null != array) {@b@ for(int i = 0; i < array.length; ++i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static int lastIndexOf(int[] array, int value) {@b@ if (null != array) {@b@ for(int i = array.length - 1; i >= 0; --i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static boolean contains(int[] array, int value) {@b@ return indexOf(array, value) > -1;@b@ }@b@@b@ public static int indexOf(short[] array, short value) {@b@ if (null != array) {@b@ for(int i = 0; i < array.length; ++i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static int lastIndexOf(short[] array, short value) {@b@ if (null != array) {@b@ for(int i = array.length - 1; i >= 0; --i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static boolean contains(short[] array, short value) {@b@ return indexOf(array, value) > -1;@b@ }@b@@b@ public static int indexOf(char[] array, char value) {@b@ if (null != array) {@b@ for(int i = 0; i < array.length; ++i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static int lastIndexOf(char[] array, char value) {@b@ if (null != array) {@b@ for(int i = array.length - 1; i >= 0; --i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static boolean contains(char[] array, char value) {@b@ return indexOf(array, value) > -1;@b@ }@b@@b@ public static int indexOf(byte[] array, byte value) {@b@ if (null != array) {@b@ for(int i = 0; i < array.length; ++i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static int lastIndexOf(byte[] array, byte value) {@b@ if (null != array) {@b@ for(int i = array.length - 1; i >= 0; --i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static boolean contains(byte[] array, byte value) {@b@ return indexOf(array, value) > -1;@b@ }@b@@b@ public static int indexOf(double[] array, double value) {@b@ if (null != array) {@b@ for(int i = 0; i < array.length; ++i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static int lastIndexOf(double[] array, double value) {@b@ if (null != array) {@b@ for(int i = array.length - 1; i >= 0; --i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static boolean contains(double[] array, double value) {@b@ return indexOf(array, value) > -1;@b@ }@b@@b@ public static int indexOf(float[] array, float value) {@b@ if (null != array) {@b@ for(int i = 0; i < array.length; ++i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static int lastIndexOf(float[] array, float value) {@b@ if (null != array) {@b@ for(int i = array.length - 1; i >= 0; --i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static boolean contains(float[] array, float value) {@b@ return indexOf(array, value) > -1;@b@ }@b@@b@ public static int indexOf(boolean[] array, boolean value) {@b@ if (null != array) {@b@ for(int i = 0; i < array.length; ++i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static int lastIndexOf(boolean[] array, boolean value) {@b@ if (null != array) {@b@ for(int i = array.length - 1; i >= 0; --i) {@b@ if (value == array[i]) {@b@ return i;@b@ }@b@ }@b@ }@b@@b@ return -1;@b@ }@b@@b@ public static boolean contains(boolean[] array, boolean value) {@b@ return indexOf(array, value) > -1;@b@ }@b@@b@ public static Integer[] wrap(int... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new Integer[0];@b@ } else {@b@ Integer[] array = new Integer[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static int[] unWrap(Integer... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new int[0];@b@ } else {@b@ int[] array = new int[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static Long[] wrap(long... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new Long[0];@b@ } else {@b@ Long[] array = new Long[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static long[] unWrap(Long... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new long[0];@b@ } else {@b@ long[] array = new long[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static Character[] wrap(char... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new Character[0];@b@ } else {@b@ Character[] array = new Character[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static char[] unWrap(Character... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new char[0];@b@ } else {@b@ char[] array = new char[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static Byte[] wrap(byte... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new Byte[0];@b@ } else {@b@ Byte[] array = new Byte[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static byte[] unWrap(Byte... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new byte[0];@b@ } else {@b@ byte[] array = new byte[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static Short[] wrap(short... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new Short[0];@b@ } else {@b@ Short[] array = new Short[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static short[] unWrap(Short... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new short[0];@b@ } else {@b@ short[] array = new short[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static Float[] wrap(float... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new Float[0];@b@ } else {@b@ Float[] array = new Float[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static float[] unWrap(Float... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new float[0];@b@ } else {@b@ float[] array = new float[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static Double[] wrap(double... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new Double[0];@b@ } else {@b@ Double[] array = new Double[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static double[] unWrap(Double... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new double[0];@b@ } else {@b@ double[] array = new double[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static Boolean[] wrap(boolean... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new Boolean[0];@b@ } else {@b@ Boolean[] array = new Boolean[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static boolean[] unWrap(Boolean... values) {@b@ if (null == values) {@b@ return null;@b@ } else {@b@ int length = values.length;@b@ if (0 == length) {@b@ return new boolean[0];@b@ } else {@b@ boolean[] array = new boolean[length];@b@@b@ for(int i = 0; i < length; ++i) {@b@ array[i] = values[i];@b@ }@b@@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static Object[] wrap(Object obj) {@b@ if (null == obj) {@b@ return null;@b@ } else if (isArray(obj)) {@b@ try {@b@ return (Object[])((Object[])obj);@b@ } catch (Exception var5) {@b@ String className = obj.getClass().getComponentType().getName();@b@ byte var4 = -1;@b@ switch(className.hashCode()) {@b@ case -1325958191:@b@ if (className.equals("double")) {@b@ var4 = 7;@b@ }@b@ break;@b@ case 104431:@b@ if (className.equals("int")) {@b@ var4 = 1;@b@ }@b@ break;@b@ case 3039496:@b@ if (className.equals("byte")) {@b@ var4 = 4;@b@ }@b@ break;@b@ case 3052374:@b@ if (className.equals("char")) {@b@ var4 = 3;@b@ }@b@ break;@b@ case 3327612:@b@ if (className.equals("long")) {@b@ var4 = 0;@b@ }@b@ break;@b@ case 64711720:@b@ if (className.equals("boolean")) {@b@ var4 = 5;@b@ }@b@ break;@b@ case 97526364:@b@ if (className.equals("float")) {@b@ var4 = 6;@b@ }@b@ break;@b@ case 109413500:@b@ if (className.equals("short")) {@b@ var4 = 2;@b@ }@b@ }@b@@b@ switch(var4) {@b@ case 0:@b@ return wrap((long[])((long[])obj));@b@ case 1:@b@ return wrap((int[])((int[])obj));@b@ case 2:@b@ return wrap((short[])((short[])obj));@b@ case 3:@b@ return wrap((char[])((char[])obj));@b@ case 4:@b@ return wrap((byte[])((byte[])obj));@b@ case 5:@b@ return wrap((boolean[])((boolean[])obj));@b@ case 6:@b@ return wrap((float[])((float[])obj));@b@ case 7:@b@ return wrap((double[])((double[])obj));@b@ default:@b@ throw new UtilException(var5);@b@ }@b@ }@b@ } else {@b@ throw new UtilException(StrUtil.format("[{}] is not Array!", new Object[]{obj.getClass()}));@b@ }@b@ }@b@@b@ public static boolean isArray(Object obj) {@b@ return null == obj ? false : obj.getClass().isArray();@b@ }@b@@b@ public static <T> T get(Object array, int index) {@b@ if (null == array) {@b@ return null;@b@ } else {@b@ if (index < 0) {@b@ index += Array.getLength(array);@b@ }@b@@b@ try {@b@ return Array.get(array, index);@b@ } catch (ArrayIndexOutOfBoundsException var3) {@b@ return null;@b@ }@b@ }@b@ }@b@@b@ public static <T> T[] getAny(Object array, int... indexes) {@b@ if (null == array) {@b@ return null;@b@ } else {@b@ T[] result = newArray(array.getClass().getComponentType(), indexes.length);@b@ int[] arr$ = indexes;@b@ int len$ = indexes.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ int i = arr$[i$];@b@ result[i] = get(array, i);@b@ }@b@@b@ return result;@b@ }@b@ }@b@@b@ public static <T> T[] sub(T[] array, int start, int end) {@b@ int length = length(array);@b@ if (start < 0) {@b@ start += length;@b@ }@b@@b@ if (end < 0) {@b@ end += length;@b@ }@b@@b@ if (start == length) {@b@ return newArray(array.getClass().getComponentType(), 0);@b@ } else {@b@ if (start > end) {@b@ int tmp = start;@b@ start = end;@b@ end = tmp;@b@ }@b@@b@ if (end > length) {@b@ if (start >= length) {@b@ return newArray(array.getClass().getComponentType(), 0);@b@ }@b@@b@ end = length;@b@ }@b@@b@ return Arrays.copyOfRange(array, start, end);@b@ }@b@ }@b@@b@ public static Object[] sub(Object array, int start, int end) {@b@ return sub(array, start, end, 1);@b@ }@b@@b@ public static Object[] sub(Object array, int start, int end, int step) {@b@ int length = length(array);@b@ if (start < 0) {@b@ start += length;@b@ }@b@@b@ if (end < 0) {@b@ end += length;@b@ }@b@@b@ if (start == length) {@b@ return new Object[0];@b@ } else {@b@ if (start > end) {@b@ int tmp = start;@b@ start = end;@b@ end = tmp;@b@ }@b@@b@ if (end > length) {@b@ if (start >= length) {@b@ return new Object[0];@b@ }@b@@b@ end = length;@b@ }@b@@b@ if (step <= 1) {@b@ step = 1;@b@ }@b@@b@ ArrayList<Object> list = new ArrayList();@b@@b@ for(int i = start; i < end; i += step) {@b@ list.add(get(array, i));@b@ }@b@@b@ return list.toArray();@b@ }@b@ }@b@@b@ public static String toString(Object obj) {@b@ if (null == obj) {@b@ return null;@b@ } else if (isArray(obj)) {@b@ try {@b@ return Arrays.deepToString((Object[])((Object[])obj));@b@ } catch (Exception var5) {@b@ String className = obj.getClass().getComponentType().getName();@b@ byte var4 = -1;@b@ switch(className.hashCode()) {@b@ case -1325958191:@b@ if (className.equals("double")) {@b@ var4 = 7;@b@ }@b@ break;@b@ case 104431:@b@ if (className.equals("int")) {@b@ var4 = 1;@b@ }@b@ break;@b@ case 3039496:@b@ if (className.equals("byte")) {@b@ var4 = 4;@b@ }@b@ break;@b@ case 3052374:@b@ if (className.equals("char")) {@b@ var4 = 3;@b@ }@b@ break;@b@ case 3327612:@b@ if (className.equals("long")) {@b@ var4 = 0;@b@ }@b@ break;@b@ case 64711720:@b@ if (className.equals("boolean")) {@b@ var4 = 5;@b@ }@b@ break;@b@ case 97526364:@b@ if (className.equals("float")) {@b@ var4 = 6;@b@ }@b@ break;@b@ case 109413500:@b@ if (className.equals("short")) {@b@ var4 = 2;@b@ }@b@ }@b@@b@ switch(var4) {@b@ case 0:@b@ return Arrays.toString((long[])((long[])obj));@b@ case 1:@b@ return Arrays.toString((int[])((int[])obj));@b@ case 2:@b@ return Arrays.toString((short[])((short[])obj));@b@ case 3:@b@ return Arrays.toString((char[])((char[])obj));@b@ case 4:@b@ return Arrays.toString((byte[])((byte[])obj));@b@ case 5:@b@ return Arrays.toString((boolean[])((boolean[])obj));@b@ case 6:@b@ return Arrays.toString((float[])((float[])obj));@b@ case 7:@b@ return Arrays.toString((double[])((double[])obj));@b@ default:@b@ throw new UtilException(var5);@b@ }@b@ }@b@ } else {@b@ return obj.toString();@b@ }@b@ }@b@@b@ public static int length(Object array) throws IllegalArgumentException {@b@ return null == array ? 0 : Array.getLength(array);@b@ }@b@@b@ public static <T> String join(T[] array, CharSequence conjunction) {@b@ return join(array, conjunction, (String)null, (String)null);@b@ }@b@@b@ public static <T> String join(T[] array, CharSequence conjunction, String prefix, String suffix) {@b@ if (null == array) {@b@ return null;@b@ } else {@b@ StringBuilder sb = new StringBuilder();@b@ boolean isFirst = true;@b@ Object[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ T item = arr$[i$];@b@ if (isFirst) {@b@ isFirst = false;@b@ } else {@b@ sb.append(conjunction);@b@ }@b@@b@ if (isArray(item)) {@b@ sb.append(join(wrap(item), conjunction, prefix, suffix));@b@ } else if (item instanceof Iterable) {@b@ sb.append(IterUtil.join((Iterable)item, conjunction, prefix, suffix));@b@ } else if (item instanceof Iterator) {@b@ sb.append(IterUtil.join((Iterator)item, conjunction, prefix, suffix));@b@ } else {@b@ sb.append(StrUtil.wrap(StrUtil.toString(item), prefix, suffix));@b@ }@b@ }@b@@b@ return sb.toString();@b@ }@b@ }@b@@b@ public static String join(long[] array, CharSequence conjunction) {@b@ if (null == array) {@b@ return null;@b@ } else {@b@ StringBuilder sb = new StringBuilder();@b@ boolean isFirst = true;@b@ long[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ long item = arr$[i$];@b@ if (isFirst) {@b@ isFirst = false;@b@ } else {@b@ sb.append(conjunction);@b@ }@b@@b@ sb.append(item);@b@ }@b@@b@ return sb.toString();@b@ }@b@ }@b@@b@ public static String join(int[] array, CharSequence conjunction) {@b@ if (null == array) {@b@ return null;@b@ } else {@b@ StringBuilder sb = new StringBuilder();@b@ boolean isFirst = true;@b@ int[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ int item = arr$[i$];@b@ if (isFirst) {@b@ isFirst = false;@b@ } else {@b@ sb.append(conjunction);@b@ }@b@@b@ sb.append(item);@b@ }@b@@b@ return sb.toString();@b@ }@b@ }@b@@b@ public static String join(short[] array, CharSequence conjunction) {@b@ if (null == array) {@b@ return null;@b@ } else {@b@ StringBuilder sb = new StringBuilder();@b@ boolean isFirst = true;@b@ short[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ short item = arr$[i$];@b@ if (isFirst) {@b@ isFirst = false;@b@ } else {@b@ sb.append(conjunction);@b@ }@b@@b@ sb.append(item);@b@ }@b@@b@ return sb.toString();@b@ }@b@ }@b@@b@ public static String join(char[] array, CharSequence conjunction) {@b@ if (null == array) {@b@ return null;@b@ } else {@b@ StringBuilder sb = new StringBuilder();@b@ boolean isFirst = true;@b@ char[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ char item = arr$[i$];@b@ if (isFirst) {@b@ isFirst = false;@b@ } else {@b@ sb.append(conjunction);@b@ }@b@@b@ sb.append(item);@b@ }@b@@b@ return sb.toString();@b@ }@b@ }@b@@b@ public static String join(byte[] array, CharSequence conjunction) {@b@ if (null == array) {@b@ return null;@b@ } else {@b@ StringBuilder sb = new StringBuilder();@b@ boolean isFirst = true;@b@ byte[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ byte item = arr$[i$];@b@ if (isFirst) {@b@ isFirst = false;@b@ } else {@b@ sb.append(conjunction);@b@ }@b@@b@ sb.append(item);@b@ }@b@@b@ return sb.toString();@b@ }@b@ }@b@@b@ public static String join(boolean[] array, CharSequence conjunction) {@b@ if (null == array) {@b@ return null;@b@ } else {@b@ StringBuilder sb = new StringBuilder();@b@ boolean isFirst = true;@b@ boolean[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ boolean item = arr$[i$];@b@ if (isFirst) {@b@ isFirst = false;@b@ } else {@b@ sb.append(conjunction);@b@ }@b@@b@ sb.append(item);@b@ }@b@@b@ return sb.toString();@b@ }@b@ }@b@@b@ public static String join(float[] array, CharSequence conjunction) {@b@ if (null == array) {@b@ return null;@b@ } else {@b@ StringBuilder sb = new StringBuilder();@b@ boolean isFirst = true;@b@ float[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ float item = arr$[i$];@b@ if (isFirst) {@b@ isFirst = false;@b@ } else {@b@ sb.append(conjunction);@b@ }@b@@b@ sb.append(item);@b@ }@b@@b@ return sb.toString();@b@ }@b@ }@b@@b@ public static String join(double[] array, CharSequence conjunction) {@b@ if (null == array) {@b@ return null;@b@ } else {@b@ StringBuilder sb = new StringBuilder();@b@ boolean isFirst = true;@b@ double[] arr$ = array;@b@ int len$ = array.length;@b@@b@ for(int i$ = 0; i$ < len$; ++i$) {@b@ double item = arr$[i$];@b@ if (isFirst) {@b@ isFirst = false;@b@ } else {@b@ sb.append(conjunction);@b@ }@b@@b@ sb.append(item);@b@ }@b@@b@ return sb.toString();@b@ }@b@ }@b@@b@ public static String join(Object array, CharSequence conjunction) {@b@ if (isArray(array)) {@b@ Class<?> componentType = array.getClass().getComponentType();@b@ if (componentType.isPrimitive()) {@b@ String componentTypeName = componentType.getName();@b@ byte var5 = -1;@b@ switch(componentTypeName.hashCode()) {@b@ case -1325958191:@b@ if (componentTypeName.equals("double")) {@b@ var5 = 7;@b@ }@b@ break;@b@ case 104431:@b@ if (componentTypeName.equals("int")) {@b@ var5 = 1;@b@ }@b@ break;@b@ case 3039496:@b@ if (componentTypeName.equals("byte")) {@b@ var5 = 4;@b@ }@b@ break;@b@ case 3052374:@b@ if (componentTypeName.equals("char")) {@b@ var5 = 3;@b@ }@b@ break;@b@ case 3327612:@b@ if (componentTypeName.equals("long")) {@b@ var5 = 0;@b@ }@b@ break;@b@ case 64711720:@b@ if (componentTypeName.equals("boolean")) {@b@ var5 = 5;@b@ }@b@ break;@b@ case 97526364:@b@ if (componentTypeName.equals("float")) {@b@ var5 = 6;@b@ }@b@ break;@b@ case 109413500:@b@ if (componentTypeName.equals("short")) {@b@ var5 = 2;@b@ }@b@ }@b@@b@ switch(var5) {@b@ case 0:@b@ return join((long[])((long[])array), conjunction);@b@ case 1:@b@ return join((int[])((int[])array), conjunction);@b@ case 2:@b@ return join((short[])((short[])array), conjunction);@b@ case 3:@b@ return join((char[])((char[])array), conjunction);@b@ case 4:@b@ return join((byte[])((byte[])array), conjunction);@b@ case 5:@b@ return join((boolean[])((boolean[])array), conjunction);@b@ case 6:@b@ return join((float[])((float[])array), conjunction);@b@ case 7:@b@ return join((double[])((double[])array), conjunction);@b@ default:@b@ throw new UtilException("Unknown primitive type: [{}]", new Object[]{componentTypeName});@b@ }@b@ } else {@b@ return join((Object[])((Object[])array), conjunction);@b@ }@b@ } else {@b@ throw new UtilException(StrUtil.format("[{}] is not a Array!", new Object[]{array.getClass()}));@b@ }@b@ }@b@@b@ public static byte[] toArray(ByteBuffer bytebuffer) {@b@ if (!bytebuffer.hasArray()) {@b@ int oldPosition = bytebuffer.position();@b@ bytebuffer.position(0);@b@ int size = bytebuffer.limit();@b@ byte[] buffers = new byte[size];@b@ bytebuffer.get(buffers);@b@ bytebuffer.position(oldPosition);@b@ return buffers;@b@ } else {@b@ return Arrays.copyOfRange(bytebuffer.array(), bytebuffer.position(), bytebuffer.limit());@b@ }@b@ }@b@@b@ public static <T> T[] toArray(Iterator<T> iterator, Class<T> componentType) {@b@ return toArray((Collection)CollectionUtil.newArrayList(iterator), componentType);@b@ }@b@@b@ public static <T> T[] toArray(Iterable<T> iterable, Class<T> componentType) {@b@ return toArray(CollectionUtil.toCollection(iterable), componentType);@b@ }@b@@b@ public static <T> T[] toArray(Collection<T> collection, Class<T> componentType) {@b@ T[] array = newArray(componentType, collection.size());@b@ return collection.toArray(array);@b@ }@b@@b@ public static <T> T[] remove(T[] array, int index) throws IllegalArgumentException {@b@ return (Object[])((Object[])remove((Object)array, index));@b@ }@b@@b@ public static long[] remove(long[] array, int index) throws IllegalArgumentException {@b@ return (long[])((long[])remove((Object)array, index));@b@ }@b@@b@ public static int[] remove(int[] array, int index) throws IllegalArgumentException {@b@ return (int[])((int[])remove((Object)array, index));@b@ }@b@@b@ public static short[] remove(short[] array, int index) throws IllegalArgumentException {@b@ return (short[])((short[])remove((Object)array, index));@b@ }@b@@b@ public static char[] remove(char[] array, int index) throws IllegalArgumentException {@b@ return (char[])((char[])remove((Object)array, index));@b@ }@b@@b@ public static byte[] remove(byte[] array, int index) throws IllegalArgumentException {@b@ return (byte[])((byte[])remove((Object)array, index));@b@ }@b@@b@ public static double[] remove(double[] array, int index) throws IllegalArgumentException {@b@ return (double[])((double[])remove((Object)array, index));@b@ }@b@@b@ public static float[] remove(float[] array, int index) throws IllegalArgumentException {@b@ return (float[])((float[])remove((Object)array, index));@b@ }@b@@b@ public static boolean[] remove(boolean[] array, int index) throws IllegalArgumentException {@b@ return (boolean[])((boolean[])remove((Object)array, index));@b@ }@b@@b@ public static Object remove(Object array, int index) throws IllegalArgumentException {@b@ if (null == array) {@b@ return array;@b@ } else {@b@ int length = length(array);@b@ if (index >= 0 && index < length) {@b@ Object result = Array.newInstance(array.getClass().getComponentType(), length - 1);@b@ System.arraycopy(array, 0, result, 0, index);@b@ if (index < length - 1) {@b@ System.arraycopy(array, index + 1, result, index, length - index - 1);@b@ }@b@@b@ return result;@b@ } else {@b@ return array;@b@ }@b@ }@b@ }@b@@b@ public static <T> T[] removeEle(T[] array, T element) throws IllegalArgumentException {@b@ return remove(array, indexOf(array, element));@b@ }@b@@b@ public static long[] removeEle(long[] array, long element) throws IllegalArgumentException {@b@ return remove(array, indexOf(array, element));@b@ }@b@@b@ public static int[] removeEle(int[] array, int element) throws IllegalArgumentException {@b@ return remove(array, indexOf(array, element));@b@ }@b@@b@ public static short[] removeEle(short[] array, short element) throws IllegalArgumentException {@b@ return remove(array, indexOf(array, element));@b@ }@b@@b@ public static char[] removeEle(char[] array, char element) throws IllegalArgumentException {@b@ return remove(array, indexOf(array, element));@b@ }@b@@b@ public static byte[] removeEle(byte[] array, byte element) throws IllegalArgumentException {@b@ return remove(array, indexOf(array, element));@b@ }@b@@b@ public static double[] removeEle(double[] array, double element) throws IllegalArgumentException {@b@ return remove(array, indexOf(array, element));@b@ }@b@@b@ public static float[] removeEle(float[] array, float element) throws IllegalArgumentException {@b@ return remove(array, indexOf(array, element));@b@ }@b@@b@ public static boolean[] removeEle(boolean[] array, boolean element) throws IllegalArgumentException {@b@ return remove(array, indexOf(array, element));@b@ }@b@@b@ public static <T> T[] reverse(T[] array, int startIndexInclusive, int endIndexExclusive) {@b@ if (isEmpty(array)) {@b@ return array;@b@ } else {@b@ int i = startIndexInclusive < 0 ? 0 : startIndexInclusive;@b@@b@ for(int j = Math.min(array.length, endIndexExclusive) - 1; j > i; ++i) {@b@ T tmp = array[j];@b@ array[j] = array[i];@b@ array[i] = tmp;@b@ --j;@b@ }@b@@b@ return array;@b@ }@b@ }@b@@b@ public static <T> T[] reverse(T[] array) {@b@ return reverse((Object[])array, 0, array.length);@b@ }@b@@b@ public static long[] reverse(long[] array, int startIndexInclusive, int endIndexExclusive) {@b@ if (isEmpty(array)) {@b@ return array;@b@ } else {@b@ int i = startIndexInclusive < 0 ? 0 : startIndexInclusive;@b@@b@ for(int j = Math.min(array.length, endIndexExclusive) - 1; j > i; ++i) {@b@ long tmp = array[j];@b@ array[j] = array[i];@b@ array[i] = tmp;@b@ --j;@b@ }@b@@b@ return array;@b@ }@b@ }@b@@b@ public static long[] reverse(long[] array) {@b@ return reverse((long[])array, 0, array.length);@b@ }@b@@b@ public static int[] reverse(int[] array, int startIndexInclusive, int endIndexExclusive) {@b@ if (isEmpty(array)) {@b@ return array;@b@ } else {@b@ int i = startIndexInclusive < 0 ? 0 : startIndexInclusive;@b@@b@ for(int j = Math.min(array.length, endIndexExclusive) - 1; j > i; ++i) {@b@ int tmp = array[j];@b@ array[j] = array[i];@b@ array[i] = tmp;@b@ --j;@b@ }@b@@b@ return array;@b@ }@b@ }@b@@b@ public static int[] reverse(int[] array) {@b@ return reverse((int[])array, 0, array.length);@b@ }@b@@b@ public static short[] reverse(short[] array, int startIndexInclusive, int endIndexExclusive) {@b@ if (isEmpty(array)) {@b@ return array;@b@ } else {@b@ int i = startIndexInclusive < 0 ? 0 : startIndexInclusive;@b@@b@ for(int j = Math.min(array.length, endIndexExclusive) - 1; j > i; ++i) {@b@ short tmp = array[j];@b@ array[j] = array[i];@b@ array[i] = tmp;@b@ --j;@b@ }@b@@b@ return array;@b@ }@b@ }@b@@b@ public static short[] reverse(short[] array) {@b@ return reverse((short[])array, 0, array.length);@b@ }@b@@b@ public static char[] reverse(char[] array, int startIndexInclusive, int endIndexExclusive) {@b@ if (isEmpty(array)) {@b@ return array;@b@ } else {@b@ int i = startIndexInclusive < 0 ? 0 : startIndexInclusive;@b@@b@ for(int j = Math.min(array.length, endIndexExclusive) - 1; j > i; ++i) {@b@ char tmp = array[j];@b@ array[j] = array[i];@b@ array[i] = tmp;@b@ --j;@b@ }@b@@b@ return array;@b@ }@b@ }@b@@b@ public static char[] reverse(char[] array) {@b@ return reverse((char[])array, 0, array.length);@b@ }@b@@b@ public static byte[] reverse(byte[] array, int startIndexInclusive, int endIndexExclusive) {@b@ if (isEmpty(array)) {@b@ return array;@b@ } else {@b@ int i = startIndexInclusive < 0 ? 0 : startIndexInclusive;@b@@b@ for(int j = Math.min(array.length, endIndexExclusive) - 1; j > i; ++i) {@b@ byte tmp = array[j];@b@ array[j] = array[i];@b@ array[i] = tmp;@b@ --j;@b@ }@b@@b@ return array;@b@ }@b@ }@b@@b@ public static byte[] reverse(byte[] array) {@b@ return reverse((byte[])array, 0, array.length);@b@ }@b@@b@ public static double[] reverse(double[] array, int startIndexInclusive, int endIndexExclusive) {@b@ if (isEmpty(array)) {@b@ return array;@b@ } else {@b@ int i = startIndexInclusive < 0 ? 0 : startIndexInclusive;@b@@b@ for(int j = Math.min(array.length, endIndexExclusive) - 1; j > i; ++i) {@b@ double tmp = array[j];@b@ array[j] = array[i];@b@ array[i] = tmp;@b@ --j;@b@ }@b@@b@ return array;@b@ }@b@ }@b@@b@ public static double[] reverse(double[] array) {@b@ return reverse((double[])array, 0, array.length);@b@ }@b@@b@ public static float[] reverse(float[] array, int startIndexInclusive, int endIndexExclusive) {@b@ if (isEmpty(array)) {@b@ return array;@b@ } else {@b@ int i = startIndexInclusive < 0 ? 0 : startIndexInclusive;@b@@b@ for(int j = Math.min(array.length, endIndexExclusive) - 1; j > i; ++i) {@b@ float tmp = array[j];@b@ array[j] = array[i];@b@ array[i] = tmp;@b@ --j;@b@ }@b@@b@ return array;@b@ }@b@ }@b@@b@ public static float[] reverse(float[] array) {@b@ return reverse((float[])array, 0, array.length);@b@ }@b@@b@ public static boolean[] reverse(boolean[] array, int startIndexInclusive, int endIndexExclusive) {@b@ if (isEmpty(array)) {@b@ return array;@b@ } else {@b@ int i = startIndexInclusive < 0 ? 0 : startIndexInclusive;@b@@b@ for(int j = Math.min(array.length, endIndexExclusive) - 1; j > i; ++i) {@b@ boolean tmp = array[j];@b@ array[j] = array[i];@b@ array[i] = tmp;@b@ --j;@b@ }@b@@b@ return array;@b@ }@b@ }@b@@b@ public static boolean[] reverse(boolean[] array) {@b@ return reverse((boolean[])array, 0, array.length);@b@ }@b@@b@ public static <T extends Comparable<? super T>> T min(T[] numberArray) {@b@ if (isEmpty((Object[])numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ T min = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (ObjectUtil.compare(min, numberArray[i]) > 0) {@b@ min = numberArray[i];@b@ }@b@ }@b@@b@ return min;@b@ }@b@ }@b@@b@ public static long min(long... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ long min = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (min > numberArray[i]) {@b@ min = numberArray[i];@b@ }@b@ }@b@@b@ return min;@b@ }@b@ }@b@@b@ public static int min(int... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ int min = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (min > numberArray[i]) {@b@ min = numberArray[i];@b@ }@b@ }@b@@b@ return min;@b@ }@b@ }@b@@b@ public static short min(short... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ short min = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (min > numberArray[i]) {@b@ min = numberArray[i];@b@ }@b@ }@b@@b@ return min;@b@ }@b@ }@b@@b@ public static char min(char... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ char min = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (min > numberArray[i]) {@b@ min = numberArray[i];@b@ }@b@ }@b@@b@ return min;@b@ }@b@ }@b@@b@ public static byte min(byte... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ byte min = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (min > numberArray[i]) {@b@ min = numberArray[i];@b@ }@b@ }@b@@b@ return min;@b@ }@b@ }@b@@b@ public static double min(double... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ double min = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (min > numberArray[i]) {@b@ min = numberArray[i];@b@ }@b@ }@b@@b@ return min;@b@ }@b@ }@b@@b@ public static float min(float... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ float min = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (min > numberArray[i]) {@b@ min = numberArray[i];@b@ }@b@ }@b@@b@ return min;@b@ }@b@ }@b@@b@ public static <T extends Comparable<? super T>> T max(T[] numberArray) {@b@ if (isEmpty((Object[])numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ T max = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (ObjectUtil.compare(max, numberArray[i]) < 0) {@b@ max = numberArray[i];@b@ }@b@ }@b@@b@ return max;@b@ }@b@ }@b@@b@ public static long max(long... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ long max = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (max < numberArray[i]) {@b@ max = numberArray[i];@b@ }@b@ }@b@@b@ return max;@b@ }@b@ }@b@@b@ public static int max(int... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ int max = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (max < numberArray[i]) {@b@ max = numberArray[i];@b@ }@b@ }@b@@b@ return max;@b@ }@b@ }@b@@b@ public static short max(short... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ short max = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (max < numberArray[i]) {@b@ max = numberArray[i];@b@ }@b@ }@b@@b@ return max;@b@ }@b@ }@b@@b@ public static char max(char... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ char max = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (max < numberArray[i]) {@b@ max = numberArray[i];@b@ }@b@ }@b@@b@ return max;@b@ }@b@ }@b@@b@ public static byte max(byte... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ byte max = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (max < numberArray[i]) {@b@ max = numberArray[i];@b@ }@b@ }@b@@b@ return max;@b@ }@b@ }@b@@b@ public static double max(double... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ double max = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (max < numberArray[i]) {@b@ max = numberArray[i];@b@ }@b@ }@b@@b@ return max;@b@ }@b@ }@b@@b@ public static float max(float... numberArray) {@b@ if (isEmpty(numberArray)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ float max = numberArray[0];@b@@b@ for(int i = 0; i < numberArray.length; ++i) {@b@ if (max < numberArray[i]) {@b@ max = numberArray[i];@b@ }@b@ }@b@@b@ return max;@b@ }@b@ }@b@@b@ public static int[] swap(int[] array, int index1, int index2) {@b@ if (isEmpty(array)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ int tmp = array[index1];@b@ array[index1] = array[index2];@b@ array[index2] = tmp;@b@ return array;@b@ }@b@ }@b@@b@ public static long[] swap(long[] array, int index1, int index2) {@b@ if (isEmpty(array)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ long tmp = array[index1];@b@ array[index1] = array[index2];@b@ array[index2] = tmp;@b@ return array;@b@ }@b@ }@b@@b@ public static double[] swap(double[] array, int index1, int index2) {@b@ if (isEmpty(array)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ double tmp = array[index1];@b@ array[index1] = array[index2];@b@ array[index2] = tmp;@b@ return array;@b@ }@b@ }@b@@b@ public static float[] swap(float[] array, int index1, int index2) {@b@ if (isEmpty(array)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ float tmp = array[index1];@b@ array[index1] = array[index2];@b@ array[index2] = tmp;@b@ return array;@b@ }@b@ }@b@@b@ public static boolean[] swap(boolean[] array, int index1, int index2) {@b@ if (isEmpty(array)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ boolean tmp = array[index1];@b@ array[index1] = array[index2];@b@ array[index2] = tmp;@b@ return array;@b@ }@b@ }@b@@b@ public static byte[] swap(byte[] array, int index1, int index2) {@b@ if (isEmpty(array)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ byte tmp = array[index1];@b@ array[index1] = array[index2];@b@ array[index2] = tmp;@b@ return array;@b@ }@b@ }@b@@b@ public static char[] swap(char[] array, int index1, int index2) {@b@ if (isEmpty(array)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ char tmp = array[index1];@b@ array[index1] = array[index2];@b@ array[index2] = tmp;@b@ return array;@b@ }@b@ }@b@@b@ public static short[] swap(short[] array, int index1, int index2) {@b@ if (isEmpty(array)) {@b@ throw new IllegalArgumentException("Number array must not empty !");@b@ } else {@b@ short tmp = array[index1];@b@ array[index1] = array[index2];@b@ array[index2] = tmp;@b@ return array;@b@ }@b@ }@b@@b@ public static <T> T[] swap(T[] array, int index1, int index2) {@b@ if (isEmpty(array)) {@b@ throw new IllegalArgumentException("Array must not empty !");@b@ } else {@b@ T tmp = array[index1];@b@ array[index1] = array[index2];@b@ array[index2] = tmp;@b@ return array;@b@ }@b@ }@b@@b@ public static Object swap(Object array, int index1, int index2) {@b@ if (isEmpty(array)) {@b@ throw new IllegalArgumentException("Array must not empty !");@b@ } else {@b@ Object tmp = get(array, index1);@b@ Array.set(array, index1, Array.get(array, index2));@b@ Array.set(array, index2, tmp);@b@ return array;@b@ }@b@ }@b@}