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

如何使用Java函数来排序数值型数组?

发布时间:2023-06-01 11:05:33

Java语言提供了许多内置函数来排序数值型数组,这些函数可以快速、高效地对数组进行排序。本文将介绍Java语言中常用的排序函数及其使用方法。

1. Arrays.sort() 函数

Arrays.sort()函数是Java语言中最常用的排序函数之一。该函数可以用于对任何类型的数值型数组进行排序,包括整型、浮点型、双精度浮点型等。

语法:Arrays.sort(数组名);

示例代码:

int[] arr = {8,6,4,3,1,9,2,5,7};

Arrays.sort(arr);

System.out.println("排序后的数组为:");

for(int i = 0; i < arr.length; i++)

{

    System.out.print(arr[i] + " ");

}

输出结果:

排序后的数组为:

1 2 3 4 5 6 7 8 9

解释:Arrays.sort函数对arr数组进行了升序排序。

2. Arrays.parallelSort() 函数

Arrays.parallelSort()函数与Arrays.sort()函数类似,只是它可以在多个处理器上并行地排序数组。这使得它可以更快地对大型数组进行排序。

语法:Arrays.parallelSort(数组名);

示例代码:

int[] arr = {8,6,4,3,1,9,2,5,7};

Arrays.parallelSort(arr);

System.out.println("排序后的数组为:");

for(int i = 0; i < arr.length; i++)

{

    System.out.print(arr[i] + " ");

}

输出结果:

排序后的数组为:

1 2 3 4 5 6 7 8 9

解释:Arrays.parallelSort函数对arr数组进行了升序排序。

3. Arrays.sort() 函数和自定义比较函数的结合使用

如果要对一个对象数组进行排序,可以使用Arrays.sort()函数,但是默认情况下,该函数会使用对象的compareTo()方法来进行排序。如果要自定义排序规则,则需要使用自定义的比较函数。

语法:Arrays.sort(数组名, Comparator);

示例代码:

class Person{

    private String name;

    private int age;

    

    public Person(String name, int age){

        this.name = name;

        this.age = age;

    }

    

    public String getName(){

        return name;

    }

    

    public int getAge(){

        return age;

    }

}

class AgeComparator implements Comparator<Person>{

    public int compare(Person a, Person b){

        if(a.getAge() < b.getAge())

            return -1;

        else if(a.getAge() == b.getAge())

            return 0;

        else

            return 1;

    }

}

public class Main{

    public static void main(String[] args){

        Person[] p = {new Person("Tom", 25), new Person("Jerry", 15), new Person("Mike", 35)};

        

        Arrays.sort(p, new AgeComparator());

        

        System.out.println("按年龄排序后的结果为:");

        for(int i = 0; i < p.length; i++){

            System.out.println(p[i].getName() + " " + p[i].getAge());

        }

    }

}

输出结果:

按年龄排序后的结果为:

Jerry 15

Tom 25

Mike 35

解释:使用自定义的比较函数AgeComparator对Person对象数组p按照年龄进行升序排序。

4. Arrays.sort() 函数和Lambda表达式的结合使用

Java 8中,提供了Lambda表达式的概念,使用Lambda表达式可以更加简洁地定义比较函数。Arrays.sort()函数可以和Lambda表达式结合使用,以便更加简单地按照某一字段对对象数组进行排序。

语法:Arrays.sort(数组名, (a, b) -> a.field - b.field);

示例代码:

class Person{

    private String name;

    private int age;

    

    public Person(String name, int age){

        this.name = name;

        this.age = age;

    }

    

    public String getName(){

        return name;

    }

    

    public int getAge(){

        return age;

    }

}

public class Main{

    public static void main(String[] args){

        Person[] p = {new Person("Tom", 25), new Person("Jerry", 15), new Person("Mike", 35)};

        

        Arrays.sort(p, (a, b) -> a.getAge() - b.getAge());

        

        System.out.println("按年龄排序后的结果为:");

        for(int i = 0; i < p.length; i++){

            System.out.println(p[i].getName() + " " + p[i].getAge());

        }

    }

}

输出结果:

按年龄排序后的结果为:

Jerry 15

Tom 25

Mike 35

解释:“(a, b) -> a.getAge() - b.getAge()”表示定义了一个Lambda表达式,用于对Person对象按照年龄进行升序排序。

综上所述,Java语言提供了多种内置函数来排序数值型数组,开发人员可以根据自己的需求选择最适合的排序方法。同时,自定义比较函数和Lambda表达式也可以帮助开发人员更加灵活地对对象数组进行排序。