Apache Commons Lang之ArrayUtils

码农不识Apache,码尽一生也枉然。

常量数组

public static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];
public static final Class<?>[] EMPTY_CLASS_ARRAY = new Class[0];
public static final String[] EMPTY_STRING_ARRAY = new String[0];
public static final long[] EMPTY_LONG_ARRAY = new long[0];
public static final Long[] EMPTY_LONG_OBJECT_ARRAY = new Long[0];
public static final int[] EMPTY_INT_ARRAY = new int[0];
public static final Integer[] EMPTY_INTEGER_OBJECT_ARRAY = new Integer[0];

转换为Map

toMap(Object[] array)

将二维数组转换为Map。

Map colorMap = ArrayUtils.toMap(new String[][] {
    {"RED", "#FF0000"},
    {"GREEN", "#00FF00"},
    {"BLUE", "#0000FF"}
});

生成数组

T[] toArray(final T… items)

将不定参数转换为数组。

String[] array = ArrayUtils.toArray("1", "2");
String[] emptyArray = ArrayUtils.<String>toArray();

null转空数组

Object[] nullToEmpty(Object[] array)

将null数组转为对应类型的空数组,如果array不是null,则返回array。

String[] arr = ArrayUtils.nullToEmpty((String[]) null);

数组操作

T[] subarray(T[] array, int startIndexInclusive, int endIndexExclusive)

截取数组开始索引位置和结束索引位置的数组为子数组

Object[]s1=ArrayUtils.subarray(newObject[]{"aa","bb","cc"},0,1); // ["aa"]
Object[]s2=ArrayUtils.subarray(newObject[]{"aa","bb","cc"},0,2); // ["aa", "bb"]

reverse(long[] array)

反转数组。

ArrayUtils.reverse(new String[]{"aa","bb"});//结果是:{"bb","aa"}

swap(Object[] array, int offset1, int offset2)

交换数组中的元素。

ArrayUtils.swap(["1", "2", "3"], 0, 2) -> ["3", "2", "1"]
ArrayUtils.swap(["1", "2", "3"], 0, 0) -> ["1", "2", "3"]
ArrayUtils.swap(["1", "2", "3"], 1, 0) -> ["2", "1", "3"]
ArrayUtils.swap(["1", "2", "3"], 0, 5) -> ["1", "2", "3"]
ArrayUtils.swap(["1", "2", "3"], -1, 1) -> ["2", "1", "3"]

数组元素查找

int indexOf(Object[] array, Object objectToFind)

数组元素所在的索引位置,如果没有则返回-1,可指定起始搜索位置。

ArrayUtils.indexOf(new String[]{"aa","bb","cc"},"cc"); // 2
ArrayUtils.indexOf(new String[]{"aa","bb","bb"},"bb",2); // 2
ArrayUtils.indexOf(newObject[]{"aa","bb","cc"},"cc",3); // -1

int lastIndexOf(Object[] array, Object objectToFind, int startIndex)

indexOf(Object[] array, Object objectToFind)相反。反向查询某个object在数组中的位置,可以指定起始搜索位置。

contains(Object[] array, Object objectToFind)

判断数组中是否包含某个元素。

ArrayUtils.contains(new String[]{"a", "b", "c"}, "a"); // true

数组判空

boolean isEmpty(Object[] array)

判断数组是否为空。

ArrayUtils.isEmpty(new String[]{"21","是"}); // false
ArrayUtils.isEmpty(new String[]{""}); // false
ArrayUtils.isEmpty(new String[]{null}); // false
ArrayUtils.isEmpty(new String[]{}); // true

boolean isNotEmpty(T[] array)

相反。判断数组是否不为空。

合并数组元素

T[] addAll(T[] array1, T… array2)

合并多个数组到某一个数组中。

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"]

T[] add(T[] array, T element)

将单个元素合并到数组中。

ArrayUtils.add(null, null)      = IllegalArgumentException
ArrayUtils.add(null, "a")       = ["a"]
ArrayUtils.add(["a"], null)     = ["a", null]
ArrayUtils.add(["a"], "b")      = ["a", "b"]
ArrayUtils.add(["a", "b"], "c") = ["a", "b", "c"]

T[] add(T[] array, int index, T element)

将单个元素合并到指定索引位置的数组中。

ArrayUtils.add(null, 0, null)      = IllegalArgumentException
ArrayUtils.add(null, 0, "a")       = ["a"]
ArrayUtils.add(["a"], 1, null)     = ["a", null]
ArrayUtils.add(["a"], 0, "b")      = ["b", "a"]
ArrayUtils.add(["a", "b"], 1, "c") = ["a", "c", "b"]

移除数组元素

T[] remove(T[] array, int index)

移除数组中指定索引位置的元素。

ArrayUtils.remove(["a"], 0)           = []
ArrayUtils.remove(["a", "b"], 0)      = ["b"]
ArrayUtils.remove(["a", "b"], 1)      = ["a"]
ArrayUtils.remove(["a", "b", "c"], 1) = ["a", "c"]

T[] removeAll(T[] array, int… indices)

<T> T[] remove(T[] array, int index)相似,移除数组中所有指定索引位置的元素。

ArrayUtils.removeAll(["a", "b", "c"], 0, 2) = ["b"]
ArrayUtils.removeAll(["a", "b", "c"], 1, 2) = ["a"]

T[] removeElement(T[] array, Object element)

移除数组中的第一个element元素。

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"]

Reprint please specify: Blog4Jun Apache Commons Lang之ArrayUtils

Previous
Apache Commons Lang之日期时间工具类 Apache Commons Lang之日期时间工具类
码农不识Apache,码尽一生也枉然。 FastDateFormatFastDateFormat是一个快速且线程安全的时间操作类,它完全可以替代SimpleDateFromat。因为是线程安全的,所以你可以把它作为一个类的静态字段使用。
2018-09-29
Next
Hexo博客主题之hexo-theme-matery的介绍 Hexo博客主题之hexo-theme-matery的介绍
这是一个采用Material Design和响应式设计的 Hexo 博客主题。 特性 简单漂亮,文章内容美观易读 Material Design设计 响应式设计,博客在桌面端、平板、手机等设备上均能很好的展现 每天动态切换Banner图
2018-09-28