欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组工具类——Arrays

程序员文章站 2024-03-05 23:31:37
...

  下面方法的参数都填的int只是举例方便,其实任何数据类型都可以。

  在Arrays中使用的方法基本都是静态方法。

将数组转换成字符串 toString()

public static String toString(int[] a)

示例:

int[] a = { 10, 20, -30, 40, 70, -50, 50, 90, 0 };
int[][] b = { { 1, 2 }, { 1 }, { 1, 3, 4 } };
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));

结果:

[10, 20, -30, 40, 70, -50, 50, 90, 0]
[[[email protected], [[email protected], [[email protected]]

数组排序 sort()

public static void sort(int[] a);
public static void sort(int[] a, int fromIndex, int toIndex);

  sort()方法支持7种基本数据类型(除了boolean),同时也支持Object和Comparator(比较器)
  第一种使用方式对数组所有元素按升序顺序排序,第二种使用方式是对数组[fromIndex,toIndex) 区域内的数据按升序排序。
示例:

int[] arr1 = { 10, 20, -30, 40, 70, -50, 50, 90, 0 };
int[] arr2 = { 10, 20, -30, 40, 70, -50, 50, 90, 0 };
Arrays.sort(arr1);
Arrays.sort(arr2, 3, 8);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));

结果:

[-50, -30, 0, 10, 20, 40, 50, 70, 90]
[10, 20, -30, -50, 40, 50, 70, 90, 0]

填充替换数组元素 fill()

public static void sort(int[] a, int val);
public static void sort(int[] a, int fromIndex, int toIndex, int val);

  第一种方法是将数组全部用val填充or替换;第二种方法是将数组[fromIndex,toInde)区域内的元素用val填充or替换。

int[] arr1 = { 10, 20, -30, 40, 70, -50, 50, 90, 0 };
int[] arr2 = { 10, 20, -30, 40, 70, -50, 50, 90, 0 };
Arrays.fill(arr1, 1);
Arrays.fill(arr2, 3, 8, 1);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));

结果:

[1, 1, 1, 1, 1, 1, 1, 1, 1]
[10, 20, -30, 1, 1, 1, 1, 1, 0]

数组复制 copyOf()和copyOfRange()

copyOf()

int[] java.util.Arrays.copyOf(int[] original, int newLength)

  第一个参数 original 是原数组,第二个参数newLength是需要复制多少个元素(返回的新数组的长度)
  功能
  复制原数组从索引0开始newLength个元素
  这个方法源代码中其实就是System.arraycopy()实现的。

int[] arr1 = Arrays.copyOf(c, len);
int[] arr2 = Arrays.copyOf(c, 5);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
[10, 20, -30, 40, 70, -50, 50, 90, 0]
[10, 20, -30, 40, 70]

copyOfRange()方法

public static int[] copyOfRange(int[] original, int from, int to)

  复制原数组索引在[form,to)内的元素

int[] arr1 = Arrays.copyOfRange(c, 1, len / 2);
System.out.println(Arrays.toString(c));
System.out.println(Arrays.toString(arr1));
[10, 20, -30, 40, 70, -50, 50, 90, 0]
[20, -30, 40]

数组二分搜索查询 binarySearch()

public static int binarySearch(int[] a, int key)
public static int binarySearch(int[] a, int fromIndex, int toIndex, int key)
int[] arr1 = { 10, 20, -30, 40, 70, -50, 50, 90, 0 };
Arrays.sort(arr1);
int index1 = Arrays.binarySearch(arr1, 40);
int index2 = Arrays.binarySearch(arr1, 0, 4, 40);
System.out.println(Arrays.toString(arr1));
System.out.println(String.format("值为40的元素下标是:%d", index1));
System.out.println(String.format("值为40的元素下标是:%d", index2));

注意:使用binarySearch()之前一定要sort()对数组排序,因为二分搜索的要求是数组是有序的。

[-50, -30, 0, 10, 20, 40, 50, 70, 90]
值为40的元素下标是:5
值为40的元素下标是:-5

判断数组是否相等 equals

public static boolean equals(int[] a, int[] a2)
int[] a = {1,2,3,4,5};
int[] b = {1,2,3,4,5};
int[] c = {1,2,3,4,6};
System.out.println(Arrays.equals(a, b));
System.out.println(Arrays.equals(a, c));
true
false
相关标签: JAVA