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

使用Java中的Arrays函数库来对数组进行排序和搜索。

发布时间:2023-06-13 11:52:37

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函数库可以帮助开发者更快速地实现各种功能,提高开发效率和代码质量。