alt

Đôi khi dữ liệu cần được sắp xếp theo một thứ tự cụ thể để dễ hiểu, dễ tìm kiếm và xử lý hơn.

Chúng tôi gọi quá trình này là phân loại. Sắp xếp đề cập đến việc sắp xếp dữ liệu theo một thứ tự cụ thể bằng các tiêu chí nhất định. Bạn có thể sắp xếp các loại dữ liệu khác nhau, bao gồm số, chuỗi và object. Java cung cấp các phương thức tích hợp sẵn để sắp xếp, chẳng hạn như các lớp Collections.

Sắp xếp dữ liệu trong Java có thể hữu ích trong ứng dụng thương mại điện tử nơi danh sách các sản phẩm cần được hiển thị cho người dùng. Các sản phẩm có thể được sắp xếp theo nhiều cách khác nhau tùy thuộc vào yêu cầu mà người dùng đặt ra như giá cả, xếp hạng, thương hiệu, v.v.

Ví dụ: nếu người dùng muốn xem tất cả các sản phẩm được sắp xếp theo giá tăng dần, ứng dụng có thể sử dụng thuật toán sắp xếp để sắp xếp các sản phẩm theo thứ tự đó. Bằng cách này, khi người dùng xem các sản phẩm, họ sẽ có thể xem các sản phẩm rẻ nhất trước tiên và đưa ra quyết định mua hàng phù hợp.

Bài viết này sẽ xem xét các phương pháp khác nhau để sắp xếp một danh sách trong Java.

Cách sử dụng phương thức Collections.Sort() trong Java

Một trong những cách phổ biến nhất để sắp xếp dữ liệu trong Java là sử dụng phương thức Collections.sort(). Nó sắp xếp một danh sách theo thứ tự tăng dần theo mặc định.

Dưới đây là một ví dụ về cách sử dụng phương thức Collections.sort() để sắp xếp danh sách các số nguyên:

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

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<Integer>();
        numbers.add(3);
        numbers.add(1);
        numbers.add(4);
        numbers.add(2);
        
        Collections.sort(numbers);
        
        System.out.println("Sorted List: " + numbers);
    }
}

Đoạn mã trên tạo một danh sách các số nguyên, thêm số bốn vào đó, sắp xếp danh sách và sau đó in danh sách đã sắp xếp ra bàn điều khiển.

Nó sử dụng các lớp từ thư viện chuẩn Java, bao gồm java.util.Collections, java.util.Listjava.util.ArrayListđể thực hiện các thao tác.

Đầu ra của đoạn mã trên được hiển thị bên dưới:

//Output
Sorted List: [1, 2, 3, 4]

Bạn cũng có thể sắp xếp danh sách các đối tượng tùy chỉnh bằng phương thức Collections.sort() này. Để làm điều này, bạn sẽ cần tạo một bộ so sánh và chuyển nó làm đối số cho phương thức Collections.sort().

Một bộ so sánh là một đối tượng thực hiện giao diện java.util.Comparator. Nó có một phương thức duy nhất được gọi là compare(),so sánh hai đối tượng và trả về một số nguyên cho biết thứ tự tương đối của chúng.

Dưới đây là một ví dụ về cách sử dụng bộ so sánh để sắp xếp danh sách các đối tượng tùy chỉnh:

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

public class Main {
    public static void main(String[] args) {
        List<Person> people = new ArrayList<>();
        people.add(new Person("Alice", 25));
        people.add(new Person("Bob", 30));
        people.add(new Person("Charlie", 20));
        
        Collections.sort(people, new PersonComparator());
        
        System.out.println("Sorted List: " + people);
    }
}

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;
    }
    
    @Override
    public String toString() {
        return name + " (" + age + ")";
    }
}

class PersonComparator implements java.util.Comparator<Person> {
    @Override
    public int compare(Person a, Person b) {
        return a.getAge() - b.getAge();
    }
}

Đoạn mã trên tạo một danh sách các đối tượng ‘Person’, thêm một số đối tượng Person vào danh sách, sắp xếp danh sách bằng bộ so sánh tùy chỉnh ( PersonComparator), sau đó in ra danh sách đã sắp xếp.

Lớp Person này có hai trường nameage,thêm phương thức getter cho các trường này. Lớp PersonComparator implements the Comparator interface và ghi đè phương thức so sánh để sắp xếp các đối tượng Person theo độ tuổi.

Đầu ra của chương trình này sẽ như sau:

//output
Sorted List: [Charlie (20), Alice (25), Bob (30)]

Tốt nhất là sử dụng phương pháp Collections.sort() này khi bạn có một tập hợp các đối tượng cần được sắp xếp dựa trên một hoặc nhiều trường.

Ví dụ: nếu bạn có một bộ sưu tập các đối tượng Employee và bạn muốn sắp xếp chúng theo họ của họ, bạn có thể sử dụng phương thức Collections.sort() này và chuyển vào một Bộ so sánh tùy chỉnh để so sánh họ của các đối tượng Nhân viên.

Cách sử dụng Phương thức List.Sort() trong Java

Phương pháp này sắp xếp một danh sách theo thứ tự tăng dần. Đây là cách nó hoạt động:

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(5, 3, 2, 4, 1);
        numbers.sort(null);
        System.out.println(numbers); // prints [1, 2, 3, 4, 5]
    }
}

Bên trong phương thức chính ở trên, một danh sách các số nguyên được gọi là “numbers” được tạo bằng phương thức Arrays.asList. Sau đó, sắp xếp danh sách các số này bằng cách sử dụng phương thức sắp xếp mặc định vì phương thức sắp xếp number.sort được truyền vào null.

Cuối cùng, danh sách đã sắp xếp được in ra bàn điều khiển bằng phương thức System.out.println sẽ xuất ra “[1, 2, 3, 4, 5]”.

List.sort() hữu ích khi bạn có một danh sách các phần tử cần được sắp xếp. Ví dụ: nếu bạn có một danh sách các chuỗi và bạn muốn sắp xếp chúng theo thứ tự bảng chữ cái, bạn có thể sử dụng phương pháp List.sort() này.

List.sort() là một phương thức thể hiện của lớp List và nó sắp xếp các phần tử theo thứ tự được xác định theo thứ tự tự nhiên của chúng hoặc theo cách triển khai được chỉ định Icomparer.

Cách sử dụng phương thức stream.sorted() trong Java

Trong Java 8 trở lên, bạn có thể sử dụng Stream API để sắp xếp danh sách. Stream API cung cấp một phương pháp được sắp xếp mà bạn có thể sử dụng để sắp xếp các thành phần của luồng.

Dưới đây là một ví dụ về cách sắp xếp danh sách các số nguyên bằng cách sử dụng luồng:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {

        List<Integer> numbers = Arrays.asList(5, 3, 2, 4, 1);
        List<Integer> sortedList = numbers.stream().sorted().collect(Collectors.toList());
        System.out.println(sortedList); // prints [1, 2, 3, 4, 5]

    }
}

Trong ví dụ trên, danh sách số được chuyển đổi thành luồng bằng phương thức stream(). Phương thức sorted()này sau đó được gọi trên luồng để sắp xếp các phần tử. Phương thức collect(Collectors.toList())này được sử dụng để thu thập các phần tử đã sắp xếp trở lại danh sách. Kết quả là một danh sách mới chứa các phần tử đã được sắp xếp. Đầu ra sẽ là “[1, 2, 3, 4, 5]”.

stream.sorted()được sử dụng tốt nhất khi bạn có một luồng phần tử cần được sắp xếp. Ví dụ: nếu bạn có một dòng số nguyên và bạn muốn sắp xếp chúng theo thứ tự tăng dần, bạn có thể sử dụng phương thức stream.Sorted() này.

Phần kết luận

Trong hướng dẫn này, bạn đã biết rằng có một số cách để sắp xếp một danh sách trong Java – phương thức Collections.sort() , phương thức stream.sorted() và phương thức List.sort() . Phương pháp tốt nhất để sử dụng phụ thuộc vào các yêu cầu cụ thể của nhiệm vụ hiện tại như chúng ta đã thảo luận ở trên.

Tôi hy vọng bài viết này đã cung cấp cho bạn thông tin chính xác về cách sắp xếp danh sách trong Java.