Java 数组方法

2024 年 9 月 10 日 | 阅读 8 分钟

java.util包中的Java Arrays类提供了一系列静态方法,方便对数组进行操作。它提供了填充、排序、搜索等功能。这些方法增强了数组的可操作性,有助于编写更简洁、更高效的代码。

让我们通过审查下面表格形式提供的Arrays类的各种方法来检查它提供的操作。

方法描述
asList()Java 中的 asList() 方法是 Arrays 类中定义的静态方法,它将数组转换为固定大小的列表。该方法返回一个以原始数组为后备的列表。它表示对列表的任何更改都将反映在原始数组中。
binarySearch()利用二分查找算法在已排序的数组中高效地查找指定值。如果找到目标值,则返回目标值的索引;如果未找到,则返回负值,表示插入点。
binarySearch(array, fromIndex, toIndex, key, Comparator)使用自定义比较器在已排序数组的指定范围内执行二分查找。fromIndex 和 toIndex 参数定义了搜索的包含范围。
compare(array 1, array 2)Java 中的 compare() 方法是 Arrays 类中定义的静态方法,它按字典顺序比较两个相同数据类型的数组。
copyOf(originalArray, newLength)java.util.Arrays 中的 copyOf 方法复制数组,通过截断或用默认值填充来将其长度调整到指定大小,视需要而定。
copyOfRange(originalArray, fromIndex, endIndex)java.util.Arrays 中的 copyOfRange(originalArray, fromIndex, toIndex) 方法通过复制原始数组中指定范围内的元素来创建一个新数组,范围从 fromIndex(包含)开始,到 toIndex(不包含)结束。
deepEquals(Object[] a1, Object[] a2)Java 中的 deepEquals() 方法是 Arrays 类中定义的静态方法,用于检查两个对象数组是否深度相等。如果两个数组深度相同,则它们要么都为 null,要么具有相同的元素数量,并且所有对应的元素对都保持深度相等。
deepHashCode(Object[] a)Java 根据指定数组的“深度内容”计算哈希码。它表明 hashCode() 函数考虑了数组中各个元素的哈希码,包括这些元素中包含的任何嵌套数组的哈希码。
deepToString(Object[] a)java.util.Arrays 中的 deepToString(Object[] a) 方法生成指定数组的字符串表示形式。
equals(array1, array2)Java 中的 Arrays.equals() 方法检查两个数组(无论是包含对象还是原始类型)是否相等。它会查看数组中的每一对元素,仅当数组长度相同且每一对元素都匹配时,才认为它们相等。
fill(originalArray, fillValue)fill 值被分配给此数组的每个索引。
hashCode(originalArray)java.util.Arrays 中的 hashCode(originalArray) 方法为指定的数组生成一个哈希码。
mismatch(array1, array2)Java 中的 Arrays.mismatch() 方法查找并返回两个 Object 数组之间第一个不匹配项的索引。如果被比较的元素之间没有发现差异,则该方法返回 -1。
parallelPrefix(originalArray, fromIndex, endIndex, functionalOperator)Java 中的 parallelPrefix() 方法是 Arrays 类中定义的静态方法,它使用自定义函数式运算符对数组的指定范围执行并行前缀操作。
parallelPrefix(originalArray, operator)Java 中的 parallelPrefix() 方法是 Arrays 类中定义的静态方法,它使用自定义函数式运算符对整个数组执行并行前缀操作。
parallelSetAll(originalArray, functionalGenerator)Java 中的 parallelSetAll() 方法是 Arrays 类中定义的静态方法,它使用提供的生成器函数来计算每个元素,从而并行设置数组的所有元素。
parallelSort(originalArray)Java 中的 parallelSort() 方法是 Arrays 类中定义的静态方法,它使用归并排序算法并行地对数组进行排序。
setAll(originalArray, functionalGenerator)Java 中的 setAll() 方法是 Arrays 类中定义的静态方法,它使用提供的生成器函数来计算每个元素,从而并行地设置数组的所有元素。
sort(originalArray)java.util.Arrays 中的 sort(originalArray) 方法对整个数组(originalArray)执行升序排序。
sort(originalArray, fromIndex, endIndex)Java 中的 sort(originalArray, fromIndex, endIndex) 方法是 Arrays 类中定义的静态方法,它使用升序函数就地对数组的指定范围进行排序。
sort(T[] a, int fromIndex, int toIndex, Comparator< super T> c)Java 中的 sort(T[] a, int fromIndex, int toIndex, Comparator< super T> c) 方法是 Arrays 类中定义的静态方法,它根据指定比较器诱导的顺序对对象数组的指定范围进行排序。
sort(T[] a, Comparator< super T> c)Java 中的 sort(T[] a, Comparator< super T> c) 方法是 Arrays 类中定义的静态方法,它根据指定比较器诱导的顺序对整个对象数组进行排序。
spliterator(originalArray)Java 中的 spliterator(originalArray) 方法是 Arrays 类中定义的静态方法,它为指定的数组返回一个 Spliterator。
spliterator(originalArray, fromIndex, endIndex)Java 中的 spliterator(originalArray, fromIndex, endIndex) 方法是 Arrays 类中定义的静态方法,它为数组的指定范围返回一个 Spliterator。
stream(originalArray)Java 中的 toString(originalArray) 方法是 Arrays 类中定义的静态方法,它返回指定数组的字符串表示形式。
toString(originalArray)java.util.Arrays 中的 toString(originalArray) 方法提供了数组内容的字符串表示形式。生成的字符串以方括号括起来并用逗号分隔,展示了数组元素。每个元素都使用 String.valueOf() 转换为字符串,使其成为用于显示或调试的便捷表示。

实施

示例 1

在下面的程序中,我们使用了 asList()、binarySearch()、compare() 和 compareUnsigned() 方法。

文件名: ArrayMethodsExample1.java

输出

Original Array: [1, 4, 7, 10, 13]
Index of 7: 2
Index of 10 in range [1, 4]: 3
Comparison result between array1 and array2: 0
Unsigned comparison result between unsignedArray1 and unsignedArray2: 1

示例 2

在下面的程序中,我们使用了 copyOf()、copyOfRange()、deepEquals()、deepHashCode() 和 deepToString() 方法。

文件名: ArrayMethodsExample2.java

输出

Copy of originalArray with new length: [1, 2, 3, 4, 5, 0, 0]
Copy of originalArray from index 1 to 4: [2, 3, 4]
Are array1 and array2 deepEquals? true
Deep hash code of array1: 30848
Deep string representation of array1: [[1, 2, 3]]

示例 3

在下面的程序中,我们使用了 equals()、fill()、hashCode()、mismatch() 和 parallelSort() 方法。

文件名: ArrayMethodsExample3.java

输出

Are array1 and array2 equal? true
Filled array with value 7: [7, 7, 7, 7, 7]
Hash code of the array: 35309286
Mismatch index between mismatchArray1 and mismatchArray2: 3
Sorted array using parallelSort: [1, 2, 3, 4, 5]

示例 4

在下面的程序中,我们使用了各种 sort() 方法和 spliterator 方法。

文件名: ArrayMethodsExample4.java

输出

Sorted array using sort(): [1, 2, 3, 4, 5]
Partially sorted array from index 1 to 4: [5, 1, 3, 4, 2]
Sorted string array by length: [Apple, Banana, Orange, Grapes]
Sorted array in reverse order: [5, 4, 3, 2, 1]
Spliterator characteristics: 17488

示例 5

在下面的程序中,我们使用了 spliterator()、stream() 和 toString() 方法。

文件名: ArrayMethodExample5.java

输出

Spliterator characteristics: 17488
IntStream from originalArray: 
1
2
3
4
5
String representation of originalArray: [1, 2, 3, 4, 5]