返回

构建 Java 中的 Arrays.sort:精通自定义排序

后端

  1. 深入了解自定义排序

自定义排序是根据特定的比较器或排序标准对数据项进行排列的过程。它使您能够根据任意属性对数据进行排序,而不仅仅是其默认顺序。这种技术在需要按名称、价格或任何其他用户定义的属性对数据进行排序时非常有用。

2. Arrays.sort 简介

Arrays.sort 是 Java 中的内置方法,用于对数组元素进行排序。它使用快速排序算法对数组中的元素进行就地排序。Arrays.sort 方法接收一个数组和一个可选的比较器作为参数。比较器用于比较数组中的元素并确定它们的顺序。

3. 实现自定义排序

以下是如何在 Java 中实现自定义排序的步骤:

  1. 定义一个比较器

    比较器是一个实现 Comparator 接口的类。Comparator 接口包含一个名为 compare() 的方法,该方法用于比较两个对象并确定它们的顺序。

  2. 实现 compare() 方法

    compare() 方法接收两个对象作为参数,并返回一个整数值来指示它们的顺序。如果第一个对象小于第二个对象,则返回一个负数;如果第一个对象大于第二个对象,则返回一个正数;如果两个对象相等,则返回零。

  3. 将比较器传递给 Arrays.sort()

    将比较器传递给 Arrays.sort() 方法,即可使用自定义排序对数组进行排序。

4. 自定义排序示例

以下是一个使用自定义排序对图书对象数组按价格升序排序的示例:

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

public class Book {

    private String title;
    private double price;
    private String author;

    // Constructor and getters/setters

    public static void main(String[] args) {

        // Create an array of Book objects
        Book[] books = {
            new Book("The Lord of the Rings", 10.99, "J.R.R. Tolkien"),
            new Book("The Hobbit", 8.99, "J.R.R. Tolkien"),
            new Book("The Catcher in the Rye", 7.99, "J.D. Salinger"),
            new Book("To Kill a Mockingbird", 12.99, "Harper Lee")
        };

        // Define a comparator to sort books by price
        Comparator<Book> bookPriceComparator = new Comparator<Book>() {
            @Override
            public int compare(Book book1, Book book2) {
                return Double.compare(book1.getPrice(), book2.getPrice());
            }
        };

        // Sort the array of books using the custom comparator
        Arrays.sort(books, bookPriceComparator);

        // Print the sorted array of books
        for (Book book : books) {
            System.out.println(book.getTitle() + " - 
import java.util.Arrays;
import java.util.Comparator;

public class Book {

    private String title;
    private double price;
    private String author;

    // Constructor and getters/setters

    public static void main(String[] args) {

        // Create an array of Book objects
        Book[] books = {
            new Book("The Lord of the Rings", 10.99, "J.R.R. Tolkien"),
            new Book("The Hobbit", 8.99, "J.R.R. Tolkien"),
            new Book("The Catcher in the Rye", 7.99, "J.D. Salinger"),
            new Book("To Kill a Mockingbird", 12.99, "Harper Lee")
        };

        // Define a comparator to sort books by price
        Comparator<Book> bookPriceComparator = new Comparator<Book>() {
            @Override
            public int compare(Book book1, Book book2) {
                return Double.compare(book1.getPrice(), book2.getPrice());
            }
        };

        // Sort the array of books using the custom comparator
        Arrays.sort(books, bookPriceComparator);

        // Print the sorted array of books
        for (Book book : books) {
            System.out.println(book.getTitle() + " - $" + book.getPrice());
        }
    }
}
quot;
+ book.getPrice()); } } }

输出:

The Hobbit - $8.99
The Catcher in the Rye - $7.99
The Lord of the Rings - $10.99
To Kill a Mockingbird - $12.99

5. 结论

自定义排序是 Java 中一种强大的技术,它允许您根据任何标准对数据进行排序。通过使用比较器,您可以定义自己的排序标准,并使用 Arrays.sort 方法对数据进行排序。这使得您可以轻松地以任何您想要的方式组织和操纵数据。