Arrays类

java.util.Arrays类是数组的工具类。

数组对象本身没有什么方法可以供我们调用,但是Java的API中为我们提供了一个工具类Arrays供我们使用,它可以对数组对象进行一些基本的操作。

Arrays类中的方法都是有static关键字修饰的静态方法,在使用的时候可以直接使用类名进行调用。

该类中博主认为常用的方法有:

  • 给数组赋值:fill方法
  • fill(dataType[] array, data val)
    将指定的val值分配给array数组的每个元素,就是将array中元素的值全部填充为val,该方法无返回值。
  • fill(dataType[] array, int fromIndex, int toIndex, data val)
    将指定的val值分配给array数组的索引fromIndex(包括)到toIndex(不包括)的元素值全部填充为val,该方法无返回值。此方法使用时,如果fromIndex>toIndex,抛出IllegalArgumentException(非法参数异常);如果fromIndex<0或者toIndex>array.length抛出ArrayIndexOutOfBoundsException(数组下标越界异常)。
//声明创建数组
int[] array = new int[10];

//将数组元素的值全部填充为1
Arrays.fill(array, 1);
//打印输出数组
System.out.println(Arrays.toString(array));//[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

//将数组索引为2(包括)到5(不包括)的元素值填充为2
Arrays.fill(array, 2, 5, 2);
//打印输出数组
System.out.println(Arrays.toString(array));//[1, 1, 2, 2, 2, 1, 1, 1, 1, 1]

  • 给数组排序:sort方法,按升序(该方法不包括为boolean数组排序)
  • sort(dataType[] array)
    按照数组的升序(数字类型由小到大,引用类型按照自然排序的元素进行排序)对数组的所有元素进行排列,无返回值,该方法使用后,原数组的顺序发生变化。
  • sort(dataType[] array, int fromIndex, int toIndex)
    按照数组的升序(数字类型由小到大,引用类型按照自然排序的元素进行排序)对数组的索引为fromIndex(包括)到toIndex(不包括)进行排列,无返回值,该方法使用后,原数组的顺序发生变化。此方法使用时,如果fromIndex>toIndex,抛出IllegalArgumentException(非法参数异常);如果fromIndex<0或者toIndex>array.length抛出ArrayIndexOutOfBoundsException(数组下标越界异常)。
//声明创建数组
int[] array = {13, 76, 61, 54, 45, 6, 98};

//数组索引为1(包括)到4(不包括)排序
Arrays.sort(array, 1, 4);
//打印数组
System.out.println(Arrays.toString(array));//[13, 54, 61, 76, 45, 6, 98]

//数组全部排序
Arrays.sort(array);
//打印数组
System.out.println(Arrays.toString(array));//[6, 13, 45, 54, 61, 76, 98]

  • 比较数组:equals方法
  • equals(dataType[] array1,dataType[] array2)
    如果array1数组与array2数组的长度和其中对应的元素都相等,就认为两个数组相等。如果相等就返回true,反之则返回false。
int[] array1 = {1, 2, 3, 4};
int[] array2 = {1, 2, 3, 4};
int[] array3 = {3, 2, 3, 5};
int[] array4 = {3, 5, 3, 5, 5};

//两个数组长度一样,元素一样
System.out.println(Arrays.equals(array1, array2));//true
//两个数组长度一样,元素不一样
System.out.println(Arrays.equals(array2, array3));//false
//两个数组长度不一样,元素不一样
System.out.println(Arrays.equals(array3, array4));//false

  • 查找数组元素:binarySearch方法(二分法查找,使用该方法之前,必须对数组进行排序,否则结果是未定义的,如果数组包含多个与key一致的值,将不能确保查找到哪个元素)
  • binarySearch(dataType[] array, dataType key)
    使用二分法在array数组中查找key元素,如果key在数组中,返回数组索引,如果不在则返回负值。
  • binarySearch(dataType[] array, int fromIndex, int toIndex, dataType key)
    使用二分法在array数组的fromIndex到toIndex的范围内搜索key元素,如果key在其中,返回索引,如果不在,则返回-1。此方法使用时,如果fromIndex>toIndex,抛出IllegalArgumentException(非法参数异常);如果fromIndex<0或者toIndex>array.length抛出ArrayIndexOutOfBoundsException(数组下标越界异常)。
int[] array = {45, 52, 12, 46, 5, 9, 636, 7, 1};

//排序数组
Arrays.sort(array);
//打印排序后的数组
System.out.println(Arrays.toString(array));//[1, 5, 7, 9, 12, 45, 46, 52, 636]

//二分法在排序后的array数组中查找2,不存在
System.out.println(Arrays.binarySearch(array, 2));//-2

//二分法在排序后的array数组中查找5,存在
System.out.println(Arrays.binarySearch(array, 5));//1

//二分法在排序后的array数组的索引为2(包括)~5(不包括)中查找45,不存在
System.out.println(Arrays.binarySearch(array,2,5, 45));//-6

//二分法在排序后的array数组的索引为2(包括)~5(不包括)中查找9,存在
System.out.println(Arrays.binarySearch(array, 2,5, 9));//3

  • 数组转字符串:toString方法
  • toString(dataType[] array)
    返回array数组内容的字符串表示形式,返回String类型。
int[] array = {45, 52, 12, 46, 5, 9, 636, 7, 1};

//打印数组
System.out.println(Arrays.toString(array));//[45, 52, 12, 46, 5, 9, 636, 7, 1]

当然,Java的API中Arrays类提供的方法还有很多,这里博主就不一一列举了,博主最近发现了一个在线网页的Java8的中文API,个人觉得还不错,网页链接,这里面还有很多工具。