类 ArrayUtil

java.lang.Object
me.codeplayer.util.ArrayUtil

public abstract class ArrayUtil extends Object
用于对数组类型的数据(字节数组参见NumberUtil类)进行相应处理的工具类
从以下版本开始:
2012-9-29
作者:
Ready
  • 字段概要

    字段
    修饰符和类型
    字段
    说明
    static final Integer[]
    长度为0的Integer数组
    static final int[]
    长度为0的int数组
    static final Object[]
    长度为0的对象数组
    static final String[]
    长度为0的字符串数组
  • 构造器概要

    构造器
    构造器
    说明
     
  • 方法概要

    修饰符和类型
    方法
    说明
    static <E> E[]
    filter(E[] array, Predicate<? super E> matcher)
    过滤指定的数组,获得符合条件的元素数组
    static int
    获取指定数组元素的"维度",如果数组为普通的一维数组,则返回1;如果为二维数组,则返回2;以此类推...
    如果不是数组,则返回-1
    注意:Java没有真正意义上的多维数组,只有嵌套数组
    static String
    getInSQL(Object array, boolean isString)
    将指定的数组拼接为InSQL子句并返回,内部将会根据元素个数来判断返回“=”语句还是“IN”语句
    如果数组为空,将会引发异常
    如果数组元素只有一个,将会返回“=1”或“='1'”
    如果数组元素有多个,将会返回“ IN (1, 2, 5)”或“ IN ('1', '2', '5')”
    static String
    getInSQL(Object array, boolean isInclude, boolean isString)
    将指定的数组拼接为InSQL子句并返回,内部将会根据元素个数来判断返回“=”语句还是“IN”语句
    如果数组为空,将会引发异常
    如果数组元素只有一个,将会返回“=1”或“='1'”
    如果数组元素有多个,将会返回“ IN (1, 2, 5)”或“ IN ('1', '2', '5')”
    getInSQL(StringBuilder sb, Object array, boolean isInclude, boolean isString)
    将指定字符串数组拼接为InSQL子句,方法将会根据元素个数来判断内容为“=”语句还是“IN”语句
    如果数组为空,将会引发异常
    如果数组元素只有一个,拼接内容为“=1”或“='1'”
    如果数组元素有多个,拼接内容为“ IN (1, 2, 5)”或“ IN ('1', '2', '5')”
    static int
    获取指定数组元素的长度,如果指定的参数为null或长度为0,则返回0
    如果指定参数不是数组类型,将引发异常
    static int
    getLength(Object array, boolean triggerError)
    获取指定数组元素的长度,如果数组为null将返回0,如果不是数组类型,将引发异常
    static boolean
    判断指定数组是否不为null并且数组长度length > 0,如果是,则返回true
    如果指定参数不为null,也不是数组类型,则引发异常
    static boolean
    in(int value, int... array)
    检测指定的整数数组中是否存在指定的整数值
    static int
    indexOfInterval(Object array, double toCompare, Boolean ascOrDesc)
    查找指定数值在已经排序好的区间临界值数组中的区间索引(本方法主要用于兼容原始数据类型)。
    static <T extends Comparable<T>>
    int
    indexOfInterval(T[] array, T toCompare, Boolean ascOrDesc)
    查找指定对象在已经排序好的区间临界值数组中的区间索引。
    static <T> boolean
    ins(T value, T... array)
    检测指定的数组中是否存在指定的值
    static boolean
    判断指定对象是否为数组类型
    static boolean
    判断指定对象是否是一个原始类型的数组(例如:int[]、float[]、char[]、double[]等)
    static String
    join(Object array, String delimiter)
    以指定的分隔符拼接数组元素并返回拼接后的字符串
    如果数组为空,将会引发异常
    join(StringBuilder sb, Object array, String delimiter)
    以指定的分隔符拼接数组元素,并追加到指定的StringBuilder中
    static Object[]
    of(Object... elements)
    快捷创建 Object 数组
    static <E> E[]
    将单个元素构造成一个仅包含该元素的数组
    static <E> E[]
    ofNullable(E element)
    将单个元素构造成一个仅包含该元素的数组
    static <T, R> R[]
    toArray(Iterable<T> items, Class<R> type, Function<? super T,R> mapper)
    将指定的集合中的元素经过 mapper 转换后,转为对应类型的数组
    static <T> T[]
    toArray(Collection<T> collection, Class<T> type)
    将指定的集合转为对应的数组
    static String
    迭代数组元素并返回迭代字符串,例如:“[e1, e2, e3, [e4_1, e4_2, e4_3, e4_4]]”
    本方法可以迭代多维数组,内部采用递归算法
    迭代数组元素并将迭代字符串追加至StringBuilder中,追加字符串形如:“[e1, e2, e3, [e4_1, e4_2, e4_3, e4_4]]
    本方法可以迭代多维数组,内部采用递归算法
    static String
    返回指定数组对象的字符串形式
    如果array是一个数组,则迭代其元素返回字符串,如“[e1, e2, e3, e4]”
    如果array不是一个数组,则直接调用String.valueOf()方法返回
    static Object
    unique(Object array)
    移除数组里的元素唯一化。
    static Object
    unique(Object array, boolean forceNewCopy)
    移除数组里的重复元素,使其唯一化。

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细资料

    • EMPTY_OBJECTS

      public static final Object[] EMPTY_OBJECTS
      长度为0的对象数组
    • EMPTY_STRINGS

      public static final String[] EMPTY_STRINGS
      长度为0的字符串数组
    • EMPTY_INTS

      public static final int[] EMPTY_INTS
      长度为0的int数组
    • EMPTY_INTEGERS

      public static final Integer[] EMPTY_INTEGERS
      长度为0的Integer数组
  • 构造器详细资料

    • ArrayUtil

      public ArrayUtil()
  • 方法详细资料

    • isArray

      public static boolean isArray(Object obj)
      判断指定对象是否为数组类型
      参数:
      obj - 指定的对象
    • join

      public static StringBuilder join(StringBuilder sb, Object array, String delimiter)
      以指定的分隔符拼接数组元素,并追加到指定的StringBuilder中
      参数:
      sb - 指定的StringBuilder(如果为null,则内部自动创建)
      array - 指定的数组
      delimiter - 指定的分隔符
    • join

      public static String join(Object array, String delimiter)
      以指定的分隔符拼接数组元素并返回拼接后的字符串
      如果数组为空,将会引发异常
      参数:
      array - 指定的数组对象
      delimiter - 指定的分隔符
    • getInSQL

      public static StringBuilder getInSQL(StringBuilder sb, Object array, boolean isInclude, boolean isString)
      将指定字符串数组拼接为InSQL子句,方法将会根据元素个数来判断内容为“=”语句还是“IN”语句
      如果数组为空,将会引发异常
      如果数组元素只有一个,拼接内容为“=1”或“='1'”
      如果数组元素有多个,拼接内容为“ IN (1, 2, 5)”或“ IN ('1', '2', '5')”
      参数:
      sb - 指定的StringBuilder
      array - 指定的任意数组
      isInclude - 指示IN SQL是包含还是排除查询,如果是包含(true)将返回=、IN,如果是排除(false)将返回!=、NOT IN
      isString - 指示元素是否以字符串形式参与InSQL语句。如果为true,将会在每个元素两侧加上单引号"'"
    • getInSQL

      public static String getInSQL(Object array, boolean isInclude, boolean isString)
      将指定的数组拼接为InSQL子句并返回,内部将会根据元素个数来判断返回“=”语句还是“IN”语句
      如果数组为空,将会引发异常
      如果数组元素只有一个,将会返回“=1”或“='1'”
      如果数组元素有多个,将会返回“ IN (1, 2, 5)”或“ IN ('1', '2', '5')”
      参数:
      array - 指定的数组
      isInclude - 指示IN SQL是包含还是排除查询,如果是包含(true)将返回=、IN,如果是排除(false)将返回!=、NOT IN
      isString - 指示元素是否以字符串形式参与InSQL语句。如果为true,将会在每个元素两侧加上单引号"'"
    • getInSQL

      public static String getInSQL(Object array, boolean isString)
      将指定的数组拼接为InSQL子句并返回,内部将会根据元素个数来判断返回“=”语句还是“IN”语句
      如果数组为空,将会引发异常
      如果数组元素只有一个,将会返回“=1”或“='1'”
      如果数组元素有多个,将会返回“ IN (1, 2, 5)”或“ IN ('1', '2', '5')”
      参数:
      array - 指定的数组
      isString - 指示元素是否以字符串形式参与InSQL语句。如果为true,将会在每个元素两侧加上单引号"'"
    • toString

      public static String toString(Object array)
      返回指定数组对象的字符串形式
      如果array是一个数组,则迭代其元素返回字符串,如“[e1, e2, e3, e4]”
      如果array不是一个数组,则直接调用String.valueOf()方法返回
    • toFinalString

      public static StringBuilder toFinalString(StringBuilder sb, Object array)
      迭代数组元素并将迭代字符串追加至StringBuilder中,追加字符串形如:“[e1, e2, e3, [e4_1, e4_2, e4_3, e4_4]]
      本方法可以迭代多维数组,内部采用递归算法
      参数:
      sb - 指定的StringBuilder
      array - 指定的数组对象
    • toFinalString

      public static String toFinalString(Object array)
      迭代数组元素并返回迭代字符串,例如:“[e1, e2, e3, [e4_1, e4_2, e4_3, e4_4]]”
      本方法可以迭代多维数组,内部采用递归算法
      参数:
      array - 指定的数组对象
    • hasLength

      public static boolean hasLength(Object array)
      判断指定数组是否不为null并且数组长度length > 0,如果是,则返回true
      如果指定参数不为null,也不是数组类型,则引发异常
      参数:
      array - 指定的数组
    • getLength

      public static int getLength(Object array, boolean triggerError)
      获取指定数组元素的长度,如果数组为null将返回0,如果不是数组类型,将引发异常
      参数:
      array - 指定的数组
      triggerError - 当数组为null或数组长度为0时,是否触发异常,如果为true,则触发异常
    • getLength

      public static int getLength(Object array)
      获取指定数组元素的长度,如果指定的参数为null或长度为0,则返回0
      如果指定参数不是数组类型,将引发异常
      参数:
      array - 指定的数组对象
    • getDimension

      public static int getDimension(Object array)
      获取指定数组元素的"维度",如果数组为普通的一维数组,则返回1;如果为二维数组,则返回2;以此类推...
      如果不是数组,则返回-1
      注意:Java没有真正意义上的多维数组,只有嵌套数组
      参数:
      array - 指定的数组对象
      从以下版本开始:
      0.3.1
    • isPrimitiveArray

      public static boolean isPrimitiveArray(Object array)
      判断指定对象是否是一个原始类型的数组(例如:int[]、float[]、char[]、double[]等)
      参数:
      array - 指定的对象
      从以下版本开始:
      0.3.1
    • in

      public static boolean in(int value, int... array)
      检测指定的整数数组中是否存在指定的整数值
      从以下版本开始:
      0.3.5
    • ins

      public static <T> boolean ins(T value, T... array)
      检测指定的数组中是否存在指定的值
      从以下版本开始:
      0.3.5
    • indexOfInterval

      public static <T extends Comparable<T>> int indexOfInterval(@Nullable T[] array, T toCompare, @Nullable Boolean ascOrDesc) throws IllegalArgumentException
      查找指定对象在已经排序好的区间临界值数组中的区间索引。

      数组array 必须预先排序好,可以是升序或降序。例如:[5, 10, 20, 50, 100] 。 此时,如果 toCompare = 4 ,则返回 -1;如果 toCompare = 5 ,则返回 0;如果 toCompare = 12 ,则返回 1。

      如果数组中存在相等的值,则返回最靠近最大值的区间索引。

      参数:
      array - 区间临界值数组
      toCompare - 指定的对象
      ascOrDesc - 指定区间临界值数组的排序方式: true 表示升序, false 表示 降序;null 则自动根据数组中前两个元素的比较结果智能判断排序方式
      返回:
      返回对应的区间索引。如果不满足最小的区间临界值,则返回 -1
      抛出:
      IllegalArgumentException - 如果数组前两个元素的大小相等,则抛出该异常
      从以下版本开始:
      1.0.4
    • indexOfInterval

      public static int indexOfInterval(Object array, double toCompare, Boolean ascOrDesc) throws IllegalArgumentException
      查找指定数值在已经排序好的区间临界值数组中的区间索引(本方法主要用于兼容原始数据类型)。

      数组array 必须预先排序好,可以是升序或降序。例如:[5, 10, 20, 50, 100] 。 此时,如果 toCompare = 4 ,则返回 -1;如果 toCompare = 5 ,则返回 0;如果 toCompare = 12 ,则返回 1。

      如果数组中存在相等的值,则返回最靠近最大值的区间索引。

      参数:
      array - 区间临界值数组
      toCompare - 指定的对象
      ascOrDesc - 指定区间临界值数组的排序方式: true 表示升序, false 表示 降序;null 则自动根据数组中前两个元素的比较结果智能判断排序方式
      返回:
      返回对应的区间索引。如果不满足最小的区间临界值,则返回 -1
      抛出:
      IllegalArgumentException - 如果数组前两个元素的大小相等,则抛出该异常
      从以下版本开始:
      1.0.4
    • unique

      public static Object unique(Object array, boolean forceNewCopy)
      移除数组里的重复元素,使其唯一化。如果存在重复的元素,则只保留排序最靠前(索引较小)的那个元素
      参数:
      array - 指定的数组对象
      forceNewCopy - 是否必须返回新的数组副本。如果为 false,在没有找到重复元素时,将会直接返回原数组 array
    • unique

      public static Object unique(Object array)
      移除数组里的元素唯一化。如果存在重复的元素,则只保留排序最靠前(索引较小)的那个元素
      参数:
      array - 指定的数组对象
      另请参阅:
    • toArray

      public static <T> T[] toArray(Collection<T> collection, Class<T> type)
      将指定的集合转为对应的数组
    • toArray

      public static <T, R> R[] toArray(Iterable<T> items, Class<R> type, Function<? super T,R> mapper)
      将指定的集合中的元素经过 mapper 转换后,转为对应类型的数组
      从以下版本开始:
      3.0.0
    • of

      public static Object[] of(Object... elements)
      快捷创建 Object 数组
    • filter

      public static <E> E[] filter(E[] array, Predicate<? super E> matcher)
      过滤指定的数组,获得符合条件的元素数组
      参数:
      array - 指定的数组
      matcher - 只有经过该过滤器后返回 true 的元素才符合条件
      从以下版本开始:
      2.0.0
    • ofNullable

      public static <E> E[] ofNullable(E element)
      将单个元素构造成一个仅包含该元素的数组
      参数:
      element - 指定的元素值
      返回:
      如果 val == null,则返回 null;否则返回对应类型的数组
      从以下版本开始:
      2.1.0
    • ofNull

      public static <E> E[] ofNull()
      将单个元素构造成一个仅包含该元素的数组
      返回:
      null
      从以下版本开始:
      3.5.0