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

使用Java中的数组排序函数实现排序功能

发布时间:2023-06-25 09:02:52

在Java中,有多种方式可以实现排序功能,其中最简单的方法是使用Java中的数组排序函数,如Arrays.sort()和Collections.sort()。本文将介绍如何使用这两个函数实现排序功能。

数组排序函数

Java中的Arrays类提供了sort()方法,可以对数组进行排序。sort()方法有多种重载形式,包括对整型数组、字符串数组和对象数组进行排序。下面是一个示例代码,演示如何使用sort()方法对整型数组进行排序:

import java.util.Arrays;

public class ArraySortExample {
   public static void main(String[] args) {
      int[] numbers = {5, 1, 3, 6, 2, 7, 9, 8, 4};

      Arrays.sort(numbers);

      for (int number : numbers) {
         System.out.print(number + " ");
      }
   }
}

输出结果为:1 2 3 4 5 6 7 8 9

上述示例代码中,首先创建了一个整型数组numbers,然后调用Arrays.sort()方法对该数组进行排序。最后使用for循环遍历数组,输出排序后的结果。

除了整型数组,sort()方法还可以对字符串数组进行排序,示例代码如下:

import java.util.Arrays;

public class StringArraySortExample {
   public static void main(String[] args) {
      String[] strings = {"banana", "apple", "cherry", "pear"};

      Arrays.sort(strings);

      for (String string : strings) {
         System.out.print(string + " ");
      }
   }
}

输出结果为:apple banana cherry pear

上述示例代码中,首先创建了一个字符串数组strings,然后调用Arrays.sort()方法对该数组进行排序。最后使用for循环遍历数组,输出排序后的结果。

除了基本数据类型数组,sort()方法还可以对对象数组进行排序。排序对象数组时,需要实现Comparable接口或Comparator接口。如果对象所属的类没有实现Comparable接口,则需要在调用sort()方法时,传递一个实现了Comparator接口的比较器对象。

下面是一个示例代码,演示如何使用sort()方法对对象数组进行排序:

import java.util.Arrays;
import java.util.Comparator;

class Employee implements Comparable<Employee> {
    private int id;
    private String name;
    private int age;

    public Employee(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public int compareTo(Employee employee) {
        return this.id - employee.id;
    }
}

class EmployeeNameComparator implements Comparator<Employee> {
    @Override
    public int compare(Employee e1, Employee e2) {
        return e1.getName().compareTo(e2.getName());
    }
}

public class ObjectArraySortExample {
   public static void main(String[] args) {
        Employee[] employees = {
                new Employee(1, "Jack", 25),
                new Employee(2, "Tom", 30),
                new Employee(3, "Lucy", 28),
                new Employee(4, "Rose", 26)
        };

        Arrays.sort(employees);

        for (Employee employee : employees) {
            System.out.println(employee.getName() + " " + employee.getAge());
        }

        Arrays.sort(employees, new EmployeeNameComparator());

        for (Employee employee : employees) {
            System.out.println(employee.getId() + " " + employee.getName());
        }
   }
}

输出结果为:

Jack 25

Lucy 28

Rose 26

Tom 30

1 Jack

3 Lucy

4 Rose

2 Tom

上述示例代码中,首先创建了一个Employee类,该类实现了Comparable接口。然后定义了一个EmployeeNameComparator类,该类实现了Comparator接口。在调用Arrays.sort()方法时,分别传递了两个参数:先按照id升序排序,再按照name升序排序。

集合排序函数

除了数组排序函数,Java中的Collections类也提供了sort()方法,可以对集合进行排序。sort()方法需要传递一个Collection接口的子类对象,并且该集合中待排序的元素所属的类需要实现Comparable接口或Comparator接口。如果集合中待排序的元素所属的类没有实现Comparable接口,则需要在调用sort()方法时,传递一个实现了Comparator接口的比较器对象。

下面是一个示例代码,演示如何使用Collections.sort()方法对集合进行排序:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class Student implements Comparable<Student> {
    private int id;
    private String name;
    private int age;

    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public int compareTo(Student student) {
        return this.id - student.id;
    }
}

class StudentNameComparator implements Comparator<Student> {
    @Override
    public int compare(Student s1, Student s2) {
        return s1.getName().compareTo(s2.getName());
    }
}

public class CollectionSortExample {
   public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student(1, "Jack", 25));
        students.add(new Student(2, "Tom", 30));
        students.add(new Student(3, "Lucy", 28));
        students.add(new Student(4, "Rose", 26));

        Collections.sort(students);

        for (Student student : students) {
            System.out.println(student.getName() + " " + student.getAge());
        }

        Collections.sort(students, new StudentNameComparator());

        for (Student student : students) {
            System.out.println(student.getId() + " " + student.getName());
        }
   }
}

输出结果为:

Jack 25

Lucy 28

Rose 26

Tom 30

1 Jack

3 Lucy

4 Rose

2 Tom

上述示例代码中,首先创建了一个Student类,该类实现了Comparable接口。然后定义了一个StudentNameComparator类,该类实现了Comparator接口。在调用Collections.sort()方法时,分别传递了两个参数:先按照id升序排序,再按照name升序排序。

结论

本文介绍了如何使用Java中的数组排序函数和集合排序函数实现排序功能。通过使用这两个函数,可以方便地对基本数据类型数组、字符串数组和对象数组进行排序,以及对集合进行排序。这两个函数的使用方式比较简单,只需要传递相应的参数即可。如果待排序的类没有实现Comparable接口,则需要在调用排序函数时,传递一个实现了Comparator接口的比较器对象。