Arrays工具类详解

版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/f2764052703/article/details/88922109

Arrays类包含用于操作数组的各种方法(如排序和搜索)。 该类还包含一个静态工厂,可以将数组视为列表。

如果指定的数组引用为空,则该类中的方法都抛出一个NullPointerException ,除非另有说明。

该类中包含的方法的文档包括实现的简要描述 。 这些描述应被视为实施说明 ,而不是说明书的一部分 。 只要规范本身得到遵守,实现者就可以随意替代其他算法。 (例如,sort(Object[])使用的sort(Object[])不一定是MergeSort,但它必须是稳定的 。)

-------java api

Arrays类中包含的方法

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

主要具有以下功能:

  1. 给数组赋值:通过 fill 方法。
  2. 对数组排序:通过 sort 方法,按升序。
  3. 比较数组:通过 equals 方法比较数组中元素值是否相等。
  4. 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
  • asList()

    public static <T> List<T> asList(T... a)
      
    返回由指定数组支持的固定大小的列表。 (将返回的列表更改为“写入数组”。)该方法作为基于数组和基于集合的API之间的桥梁,与Collection.toArray()相结合 。 返回的列表是可序列化的,并实现RandomAccess 。

    此方法还提供了一种方便的方式来创建一个初始化为包含几个元素的固定大小的列表:

    List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");


  • binarySearch()

    基本方法:public static int binarySearch(dateType[] a,dateType key)

    使用二进制搜索算法搜索指定值的指定数组的指定值。 在进行此调用之前,必须对数组进行排序(按照sort(short[])方法)。 如果没有排序,结果是未定义的。 如果数组包含具有指定值的多个元素,则不能保证将找到哪个元素。

    参数:
    - byte[] a要搜索的数组
    - byte key要搜索的值


    扩展方法:public static int binarySearch(dateType[] a, int fromIndex,int toIndex,dateTypekey)

    扫描二维码关注公众号,回复: 5719366 查看本文章

    使用二进制搜索算法搜索指定值的指定数组的范围。 在进行此调用之前,范围必须按照sort(short[], int, int)方法进行排序。 如果没有排序,结果是未定义的。 如果范围包含具有指定值的多个元素,则不能保证将找到哪个元素。

    • byte[] a要搜索的数组
    • fromIndex要搜索的第一个元素(包括)的索引
    • toIndex要搜索的最后一个元素(排他)的索引
    • byte key要搜索的值

  • copyOf

    方法:public static <T> T[] copyOf(T[] original, int newLength)

    复制指定的数组,截断或填充false (如有必要),以使副本具有指定的长度。 对于原始数组和副本都有效的所有索引,两个数组将包含相同的值。 对于在副本中而不是原件有效的任何索引,副本将包含false 。 当且仅当指定长度大于原始数组的长度时,这些索引才会存在。

    参数:

    • original要复制的数组
    • newLength - 要返回的副本的长度

  • copyOfRange

    方法:public static <T> T[] copyOfRange(T[] original, int from, int to)

    将指定数组的指定范围复制到新数组中

    参数:

    • original要从中复制范围的数组
    • from要复制的范围的初始索引(包括)
    • to要复制的范围的最终索引,排他。 (该索引可能位于数组之外)

  • equals

    方法:public static boolean equals(Object[] a,Object[] a2)

    如果两个指定的对象数组彼此相等 ,则返回true 。 如果两个数组都包含相同数量的元素,则两个数组被认为是相等的,并且两个数组中所有对应的元素对都相等。 如果(e1==null ? e2==null : e1.equals(e2)),两个对象e1和e2被认为是相等的 。 换句话说,如果两个数组在相同的顺序中包含相同的元素,则它们是相等的。 另外,如果两个数组引用都是null,则两个数组引用被认为是相等的 。

    如果两个指定的数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。

    参数:

    • a要测试相等的一个数组
    • a2要进行相等测试的另一个数组

  • fill

    1. 基本方法:
      public static void fill(dateType[] a,dateType val)

      将指定的值分配给指定的数组的每个元素。

      参数:
      a - 要填充的数组
      val - 要存储在数组的所有元素中的值

    2. 扩展方法:
      public static void fill(dateType[] a,dateType fromIndex,dateType toIndex,dateType val)

      将指定的值分配给指定的数组的指定范围的每个元素。 要填充的范围从索引fromIndex扩展到索引toIndex ,排他。 (如果fromIndex==toIndex ,要填充的范围是空的。)

      参数:

      • a - 要填充的数组
      • fromIndex - 要用指定值填充的第一个元素(包括)的索引
      • toIndex - 要用指定值填充的最后一个元素(排除)的索引
      • val - 要存储在数组的所有元素中的值
  • hashCode

    方法:public static int hashCode(Object[] a)

    根据指定数组的内容返回哈希码。 如果数组包含其他数组作为元素,则哈希码基于它们的身份而不是其内容。 因此,可以直接或间接通过一个或多个数组级别将数组本身作为元素调用此方法。

    对于任何两个阵列a和b等Arrays.equals(a, b) ,也是Arrays.hashCode(a) == Arrays.hashCode(b)的情况。

    通过此方法返回的值等于将由Arrays.asList(a).hashCode()被返回,除非a null是,在这种情况下是0返回的值。

    参数:

    • a - 要计算的基于内容的哈希码的数组

  • sort

    对指定对象数组根据其元素的自然顺序进行升序排列。

    1. public static <T> void sort(T[] a,Comparator<? super T> c)全部排序

      根据其元素的natural ordering ,按照升序排列指定的对象数组。 阵列中的所有元素必须实现Comparable接口。 此外,数组中的所有元素必须相互可比较。

      参数:
      a - 要排序的数组

    2. public static <T> void sort(T[] a,int fromIndex,int toIndex,Comparator<? super T> c))部分排序

      对指定对象升序排列的数组的指定范围内,根据natural ordering的元素。 要排序的范围从索引fromIndex (包括)扩展到索引toIndex ,排他。 (如果fromIndex==toIndex ,要排序的范围为空。)此范围中的所有元素必须实现Comparable接口。 此外,该范围内的所有元素必须相互可比较。

      参数:
      a - 要排序的数组
      fromIndex - 要排序的第一个元素(包括)的索引
      toIndex - 要排序的最后一个元素(排他)的索引

  • toString

    方法:public static String toString(Object[] a)

    返回指定数组的内容的字符串表示形式。 如果数组包含其它数组作为元件,它们被转换为字符串Object.toString()从Object继承的方法,其描述了他们的身份 ,而不是其内容。

    通过此方法返回的值等于将由Arrays.asList(a).toString()被返回,除非a null是,在这种情况下是"null"返回的值。

    参数:
    a - 要返回的字符串表示形式的数组

参考资料:
java api文档

猜你喜欢

转载自blog.csdn.net/f2764052703/article/details/88922109