欢迎访问宙启技术站
智能推送

Java中如何使用Arrays函数对数组进行排序和搜索?

发布时间:2023-06-21 09:42:18

Java中有一个java.util.Arrays类,它包含了若干对数组进行排序和搜索的静态方法。下面我们来了解一下这些方法的使用。

1. 对数组进行排序

Java中数组排序有两个方法Arrays.sort()和Arrays.parallelSort()。前者是单线程排序,后者是多线程排序,对于大数组(超过8192元素),parallelSort速度可能更快。

数组排序的方法签名为:

public static void sort(int[] a)

public static <T> void sort(T[] a, Comparator<? super T> c)

public static void parallelSort(int[] a)

public static <T> void parallelSort(T[] a, Comparator<? super T> c)

个参数是要排序的数组,第二个是用来比较元素大小的比较器。

举个例子:

int[] arr = {3, 2, 5, 1, 4};

Arrays.sort(arr); // 对数组进行排序

System.out.println(Arrays.toString(arr)); // 输出[1, 2, 3, 4, 5]

2. 对数组进行搜索

Java中数组搜索也有两个方法Arrays.binarySearch()和Arrays.parallelPrefix()。前者是二分查找,适合已经排好序的数组,后者是求前缀和,每个元素的值为前面元素的和加上自己。

二分查找的方法签名为:

public static int binarySearch(int[] a, int key)

public static <T> int binarySearch(T[] a, T key, Comparator<? super T> c)

其中, 个参数是要搜索的数组,第二个是要查找的关键字,第三个是用来比较元素大小的比较器。

举个例子:

int[] arr = {1, 2, 3, 4, 5};

System.out.println(Arrays.binarySearch(arr, 3)); // 输出2

求前缀和的方法签名为:

public static void parallelPrefix(int[] array, IntBinaryOperator op)

public static void parallelPrefix(long[] array, LongBinaryOperator op)

public static void parallelPrefix(double[] array, DoubleBinaryOperator op)

其中, 个参数是要求前缀和的数组,后面的是用来求和的二元操作符。

举个例子:

int[] arr = {1, 2, 3, 4, 5};

Arrays.parallelPrefix(arr, (x, y) -> x + y); // 向数组中每个元素依次加上前面所有元素的和

System.out.println(Arrays.toString(arr)); // 输出[1, 3, 6, 10, 15]

以上就是Java中对数组进行排序和搜索的方法。如果你需要对数组进行操作,不妨使用Arrays类中的方法来提高效率和可读性。