使用Java中的Arrays函数库来对数组进行排序和搜索。
Java中的Arrays函数库提供了许多有用的函数来对数组进行排序和搜索,使得Java编程更加便利和高效。本文将介绍Arrays库中的排序和搜索函数,并给出相应的示例代码。
一、排序
1. sort()方法
sort()方法是Java中最基本的排序函数,可以对数组进行升序排序或者降序排序。使用Arrays.sort()方法需要传入要排序的数组作为参数,具体语法如下:
Arrays.sort(arr); //升序排序 Arrays.sort(arr,Collections.reverseOrder()); //降序排序
其中,第二个参数是Comparator对象,该对象可以用来改变排序规则,实现自定义排序。
示例代码:
import java.util.Arrays;
import java.util.Collections;
public class TestSort {
public static void main(String[] args){
Integer[] arr = new Integer[]{5,8,3,1,6,7,2,4};
System.out.println("升序排序前:"+Arrays.toString(arr));
Arrays.sort(arr);
System.out.println("升序排序后:"+Arrays.toString(arr));
Arrays.sort(arr, Collections.reverseOrder());
System.out.println("降序排序后:"+Arrays.toString(arr));
}
}
输出结果:
升序排序前:[5, 8, 3, 1, 6, 7, 2, 4] 升序排序后:[1, 2, 3, 4, 5, 6, 7, 8] 降序排序后:[8, 7, 6, 5, 4, 3, 2, 1]
2. parallelSort()方法
parallelSort()方法与sort()方法类似,但是不同之处在于parallelSort()方法使用多线程来进行并行排序,因此可以更快速地对大量数据进行排序。用法与sort()方法相同,语法如下:
Arrays.parallelSort(arr); //升序排序 Arrays.parallelSort(arr,Collections.reverseOrder()); //降序排序
示例代码:
import java.util.Arrays;
import java.util.Collections;
public class TestParallelSort {
public static void main(String[] args){
Integer[] arr = new Integer[1000000];
for(int i=0; i<arr.length;i++){
arr[i] = (int)(Math.random()*1000000);
}
long startTime = System.currentTimeMillis();
Arrays.sort(arr);
long endTime = System.currentTimeMillis();
System.out.println("串行排序时间:"+(endTime-startTime)+"ms");
for(int i=0; i<arr.length;i++){
arr[i] = (int)(Math.random()*1000000);
}
startTime = System.currentTimeMillis();
Arrays.parallelSort(arr);
endTime = System.currentTimeMillis();
System.out.println("并行排序时间:"+(endTime-startTime)+"ms");
}
}
输出结果:
串行排序时间:1069ms 并行排序时间:111ms
由于使用多线程对数据进行排序,parallelSort()方法的速度比sort()方法快了一个数量级。
二、搜索
1. binarySearch()方法
binarySearch()方法可以在已经有序的数组中查找指定的元素。如果找到了该元素,则返回其索引,否则返回一个负数,表示没有找到该元素。使用Arrays.binarySearch()方法需要传入已经排序的数组和要查找的元素,具体语法如下:
Arrays.binarySearch(arr, key); //查找升序排列的数组中key的位置 Arrays.binarySearch(arr, Collections.reverseOrder(), key); //查找降序排列的数组中key的位置
注意:使用binarySearch()方法对数组进行查找之前,需要先使用sort()或者parallelSort()方法将数组排序。
示例代码:
import java.util.Arrays;
import java.util.Collections;
public class TestBinarySearch {
public static void main(String[] args){
Integer[] arr = new Integer[]{1,2,3,4,5,6,7,8};
int index = Arrays.binarySearch(arr, 5);
System.out.println("5在数组中的索引位置:"+index);
Arrays.sort(arr, Collections.reverseOrder());
index = Arrays.binarySearch(arr, 5, Collections.reverseOrder());
System.out.println("5在数组中的索引位置:"+index);
}
}
输出结果:
5在数组中的索引位置:4 5在数组中的索引位置:3
2. equals()方法
equals()方法可以比较两个数组是否相等,如果两个数组长度相等,并且对应的元素也相等,则它们相等;否则不相等。
示例代码:
import java.util.Arrays;
public class TestEquals {
public static void main(String[] args){
int[] arr1 = new int[]{1,2,3,4,5};
int[] arr2 = new int[]{1,2,3,4,5};
int[] arr3 = new int[]{5,4,3,2,1};
boolean result1 = Arrays.equals(arr1, arr2);
boolean result2 = Arrays.equals(arr1, arr3);
System.out.println("arr1和arr2是否相等:"+result1);
System.out.println("arr1和arr3是否相等:"+result2);
}
}
输出结果:
arr1和arr2是否相等:true arr1和arr3是否相等:false
三、小结
Arrays函数库提供了强大的功能,可以方便地对数组进行排序和搜索。在实际开发中,Arrays函数库可以帮助开发者更快速地实现各种功能,提高开发效率和代码质量。
