类 ArrayUtil


  • public abstract class ArrayUtil
    extends java.lang.Object
    用于对数组类型的数据(字节数组参见NumberUtil类)进行相应处理的工具类
    作者:
    Ready
    • 字段概要

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

      构造器 
      构造器 说明
      ArrayUtil()  
    • 方法概要

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

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

      • EMPTY_OBJECTS

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

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

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

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

      • ArrayUtil

        public ArrayUtil()
    • 方法详细资料

      • isArray

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

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

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

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

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

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

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

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

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

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

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

        public static boolean isPrimitiveArray​(java.lang.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 java.lang.Comparable<T>> int indexOfInterval​(@Nullable
                                                                              T[] array,
                                                                              T toCompare,
                                                                              @Nullable
                                                                              java.lang.Boolean ascOrDesc)
                                                                       throws java.lang.IllegalArgumentException
        查找指定对象在已经排序好的区间临界值数组中的区间索引。

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

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

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

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

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

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

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

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

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

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

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

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

        public static <E> E[] filter​(E[] array,
                                     java.util.function.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