Java函数——数组相关操作:常见的Java数组操作函数
1. System.arraycopy()
System.arraycopy() 是 Java 中一个非常常见的数组操作函数,它可以将一个源数组的部分或全部元素复制到目标数组的相应位置。具体格式是:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
其中,src 表示源数组,srcPos 表示源数组开始复制的位置,dest 表示目标数组,destPos 表示目标数组开始复制的位置,length 表示要复制的元素个数。
示例代码:
int[] src = new int[]{1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, 5);
2. Arrays.sort()
Arrays.sort() 是 Java 中对数组进行排序的函数,可以对 int、double 或其它基本数据类型的数组进行排序,也可以对 String 等对象数组进行排序。
示例代码:
int[] arr = new int[]{5, 1, 4, 2, 3};
Arrays.sort(arr); // 升序排序
System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 3, 4, 5]
String[] str_arr = new String[]{"b", "a", "d", "c"};
Arrays.sort(str_arr); // 按字符串的字典序升序排序
System.out.println(Arrays.toString(str_arr)); // 输出 [a, b, c, d]
3. Arrays.fill()
Arrays.fill() 可以将数组中的所有元素设置为指定的值。具体格式是:
public static void fill(Object[] a, Object val)
public static void fill(Object[] a, int fromIndex, int toIndex, Object val)
其中,a 表示要设置值的数组,val 表示要设置的值,fromIndex 和 toIndex 分别表示要设置的元素的起始位置和结束位置(不包含结束位置上的元素)。
示例代码:
int[] arr = new int[5];
Arrays.fill(arr, 1); // 将所有元素设置为 1
System.out.println(Arrays.toString(arr)); // 输出 [1, 1, 1, 1, 1]
4. Arrays.asList()
Arrays.asList() 可以将一个数组转换成一个 List 容器,从而方便进行一些操作(比如删除、插入等)。
示例代码:
Integer[] arr = new Integer[]{1, 2, 3, 4, 5};
List<Integer> list = Arrays.asList(arr);
System.out.println(list); // 输出 [1, 2, 3, 4, 5]
list.set(0, 0); // 修改 个元素
System.out.println(list); // 输出 [0, 2, 3, 4, 5]
System.out.println(Arrays.toString(arr)); // 输出 [0, 2, 3, 4, 5]
注意,Arrays.asList() 转换的 List 是不可变的,不能进行添加或删除操作。
5. Arrays.copyOf()
Arrays.copyOf() 可以将一个已有数组复制到一个新的数组中。具体格式是:
public static <T> T[] copyOf(T[] original, int newLength)
其中,original 表示要复制的数组,newLength 表示新数组的长度。
示例代码:
String[] str_arr = new String[]{"a", "b", "c"};
String[] new_arr = Arrays.copyOf(str_arr, 5); // 复制数组并扩容到 5
System.out.println(Arrays.toString(new_arr)); // 输出 [a, b, c, null, null]
6. Arrays.binarySearch()
Arrays.binarySearch() 可以在一个已排序的数组中二分查找指定元素的位置。如果找到了元素,返回值为元素所在的下标;如果没有找到,返回负数。
示例代码:
int[] arr = new int[]{1, 2, 3, 4, 5};
int index = Arrays.binarySearch(arr, 3); // 查找元素 3 的下标
System.out.println(index); // 输出 2
7. Arrays.equals()
Arrays.equals() 可以比较两个数组是否相等。如果两个数组长度相同且对应元素相等,返回 true;否则返回 false。
示例代码:
int[] arr1 = new int[]{1, 2, 3};
int[] arr2 = new int[]{1, 2, 3};
boolean equal = Arrays.equals(arr1, arr2);
System.out.println(equal); // 输出 true
8. Arrays.deepToString()
Arrays.deepToString(arr) 可以将数组转换成一个字符串表示。如果数组中还包含数组,也会将其转换成字符串表示。这个功能对于调试程序非常方便。
示例代码:
int[][] arr = new int[][]{{1,2},{3,4,5},{6}};
System.out.println(Arrays.deepToString(arr));
// 输出 [[1, 2], [3, 4, 5], [6]]
总结:
Java数组是一个常见的数据结构,使用数组可以简化很多任务的处理。System.arraycopy()、Arrays.sort()、Arrays.fill()、Arrays.asList()、Arrays.copyOf()、Arrays.binarySearch()、Arrays.equals() 和 Arrays.deepToString() 等数组操作函数也是 Java 编程中非常常用的几个函数。我们需要熟练掌握这些函数的用法,以便更好地开发高质量的 Java 代码。
