import org.apache.commons.lang3.ArrayUtils; public class ArrayUtilsDemo { private static final char[] chars = { 'a', 'b', '1', '2', 'c', 'd', 'e', 'f', 'a' }; private static final double[] doubles = { 1, 2, 3, 44, 5, 6, 7, 8, 9 }; private static final double[] nn = null; private static final Double[] DD = { 1.2, 3.1, 444.1 }; private static final Object[] ob = null; public static void main(String[] args) { /* * 根据EMPTY_*_ARRAY返回一个长度为0的数组. *包含 * object,class,string,long,long_object,int,integer_object, * short,short_object,byte,byte_object,double,double_object,float, * float_object,boolean,boolean_object,char,char_object. */ System.out.println(ArrayUtils.EMPTY_CHAR_ARRAY); /* * 返回-1 表示数组下标未找到. */ System.out.println(ArrayUtils.INDEX_NOT_FOUND); /* * 复制给定的数组,并增加了在新的数组的末尾给定元素。ArrayUtils.add(array, element) * * @param array 复制的数组或添加的元素,可能为null * * @param element 添加一个新的元素对象到数组的最后一个索引后面 */ System.out.println(ArrayUtils.add(chars, 'F')); /* * 添加到一个新的数组到指定的数组。ArrayUtils.add(array, element) * * @param array1 第一个数组或元素,可能为null * * @param array2 复制在第一个数组后的的数组或添加的元素,可能为null ArrayUtils.addAll(null, * null) = null ArrayUtils.addAll(array1, null) = cloned copy of array1 * ArrayUtils.addAll(null, array2) = cloned copy of array2 * ArrayUtils.addAll([], []) = [] ArrayUtils.addAll([null], [null]) = * [null, null] ArrayUtils.addAll(["a", "b", "c"], ["1", "2", "3"]) = * ["a", "b", "c", "1", "2", "3"] */ System.out.println(ArrayUtils.addAll(chars, chars)); /* * 把array输出一个字符串数组. * * @param array 被转换的数组 */ System.out.println("char -> String:" + ArrayUtils.toString(chars)); System.out.println("double -> String:" + ArrayUtils.toString(doubles)); /* * 如果第一个参数不为null则输出第一个参数,如果为null则输出第二个字符串. * * @param array 得到一个数组 ,可以为null * * @param stringIfNull 如果array为null 则输出stringIfNull. */ System.out.println("array为null,显示X:" + ArrayUtils.toString(null, "X")); System.out.println("array不为null,不显示X:" + ArrayUtils.toString(chars, "X")); /* * 判断数组是否为null, 其它类型同理. */ System.out.println("判断该数组为空,如果结果为true:" + ArrayUtils.isEmpty(chars)); System.out .println("判断该数组不为空,如果结果为true:" + ArrayUtils.isNotEmpty(chars)); /* * 克隆一个数组,如果数组为null则返回null, 其它类型同理. */ System.out.println(ArrayUtils.clone(chars)); /* * 检查数组中是否存在指定的对象. * * @param array 搜索的数组 * * @param objectToFind 搜索的对象 return true表示有数组有搜索的对象,false则没有. */ System.out.println("contains:" + ArrayUtils.contains(chars, 'a')); /* * 如果不为空获得数组的长度. */ System.out.println(ArrayUtils.getLength(nn)); /* * 如果数组为null则返回一个长度为0的数组, 其它类型一样. */ System.out.println("****nullToEmpty****"); System.out.println(ArrayUtils.nullToEmpty(ob)); System.out.println(ArrayUtils.nullToEmpty(chars)); System.out.println(ArrayUtils.nullToEmpty(doubles)); /* * 截取数组长度产生一个新的数组 * * @param array 数组 * * @param startIndexInclusive 开始索引,如果小于0则等于0 * * @param endIndexExclusive 结束索引,如果大于数组最大数则等于array.length * * @return 返回一个新的数组,包含的元素为初始数组起始到结束索引之间. 其它类型同样. */ System.out.println("***subarray***"); System.out.println(ArrayUtils.subarray(chars, 0, 4)); /* * 检查2个数组的长度是否相等,如果相等返回true,不相等返回false. */ System.out.println("***isSameLength***"); System.out.println(ArrayUtils.isSameLength(nn, doubles)); /* * 比较2个数组类型是否相同,如果相同返回true,不相同返回false 数组为空报 IllegalArgumentException 错误 */ System.out.println("***isSameType***"); System.out.println(ArrayUtils.isSameType(chars, doubles)); /* * 反转数组. 其它类型同理. */ System.out.println("***reverse***"); char[] tmp = { 'a', 'b', '1', '2', 'c', 'd', 'e', 'f' }; System.out.println(ArrayUtils.toString(tmp)); ArrayUtils.reverse(tmp); System.out.println(ArrayUtils.toString(tmp)); /* * 获得数组给定值的索引 * * @param array 通过寻找值搜索的数组,可以为null, * * @param valueToFind 寻找的值 * * @return 给定值在数组里的index <pre> ArrayUtils.getLength(null) = 0 * ArrayUtils.getLength([]) = 0 ArrayUtils.getLength([null]) = 1 * ArrayUtils.getLength([true, false]) = 2 ArrayUtils.getLength([1, 2, * 3]) = 3 ArrayUtils.getLength(["a", "b", "c"]) = 3 </pre> */ System.out.println("***indexOf***"); System.out.println(ArrayUtils.indexOf(chars, 'a')); /* * 获得数组给定值的索引 * * @startIndex 搜索的起始索引. 即从startIndex开始进行索引 startIndex前的忽略. */ System.out.println(ArrayUtils.indexOf(chars, 'a', 1)); /* * 返回符合数组给定值结尾的数组. 如果没有符合的返回 -1 * * @startIndex 搜索的起始索引. */ System.out.println("***lastIndexOf***"); System.out.println(ArrayUtils.lastIndexOf(chars, 'e')); System.out.println(ArrayUtils.lastIndexOf(chars, 'a', 8)); /* * 基本类型数组 -->对象数组 */ System.out.println("***toObject***"); long[] primitiveArray = new long[] { 12, 122, 345, 7678 }; System.out.println(ArrayUtils.toString(primitiveArray)); Long[] objectArray = ArrayUtils.toObject(primitiveArray); System.out.println(ArrayUtils.toString(objectArray)); /* * 对象数组-->基本类型数组 */ System.out.println("***toPrimitive***"); Double[] doubleObjects = new Double[] { new Double(123.45), new Double(566.3366) }; System.out.println(ArrayUtils.toString(doubleObjects)); double[] doublePrimitives = ArrayUtils.toPrimitive(doubleObjects); System.out.println(ArrayUtils.toString(doublePrimitives)); System.out.println(ArrayUtils.toPrimitive(DD, 122)); /* * 删除指定下标数组的值 * <pre> ArrayUtils.remove(["a"], 0) = [] * ArrayUtils.remove(["a", "b"], 0) = ["b"] ArrayUtils.remove(["a", * "b"], 1) = ["a"] ArrayUtils.remove(["a", "b", "c"], 1) = ["a", "c"] * </pre> */ char[] chartmp = { '1', '2', 'a' }; System.out.println("remove:"); System.out.println(ArrayUtils.toString(chartmp)); System.out.println(ArrayUtils.remove(chartmp, 0)); /* * 删除指定元素的值. <pre> ArrayUtils.removeElement(null, "a") = null * ArrayUtils.removeElement([], "a") = [] * ArrayUtils.removeElement(["a"], "b") = ["a"] * ArrayUtils.removeElement(["a", "b"], "a") = ["b"] * ArrayUtils.removeElement(["a", "b", "a"], "a") = ["b", "a"] </pre> */ System.out.println("***removeElement***"); System.out.println(ArrayUtils.toString(ArrayUtils.removeElement( doubles, 44))); } }