Header ads

Header ads
» » » Sắp xếp thật đơn giản

Khi làm việc với lượng lớn dữ liệu thì nhu cầu sắp xếp để tìm kiếm càng lớn, do đó chúng ta thấy tính năng sắp xếp có ở hầu hết các ứng dụng. Nhưng nếu bạn tự code thì sẽ mất khá nhiều thời gian và công sức. Ở bài viết này, tôi sẽ hướng dẫn bạn một cách đơn giản để sắp xếp dữ liệu trong Java.
Trong bài viết này, tôi sẽ sử dụng java.util.Collections.sort để sắp xếp các đối tượng trong Collection theo thứ tự tăng dần. Để sắp xếp được, thì trước tiên các đối tượng đó phải implement interface java.lang.Comparable với phương thức compareTo(Object obj2).
Giả sử ta cần so sánh đối tượng obj1 với obj2 thì phương thức này phải trả về kết quả như sau:

  • 0 Nếu như obj1 và obj2 bằng nhau
  • Số dương Nếu obj1 lớn hơn obj2
  • Số âm Nếu obj1 nhỏ hơn obj2

Ví dụ 1: Sắp xếp một danh sách chuỗi theo thứ tự tăng dần

Đây là code:
    public static void main(String[] args) {
        //Khởi tạo một đối tượng List chứa tên là các chuỗi
        List<String> names = new LinkedList<String>();

        //Khởi tạo dữ liệu
        names.add("Tạp");
        names.add("Chí");
        names.add("Lập");
        names.add("Trình");

        //Sắp xếp
        java.util.Collections.sort(names);

        //Hiển thị xâu sau khi sắp xếp
        for (String name : names) {
            System.out.println(name);
        }
    }
Và đây là kết quả
Chí
Lập
Trình
Tạp

Ví dụ 2: sắp xếp danh sách sản phẩm theo tứ tự giá tăng dần

Đầu tiên, ta viết class Product để mô tả sản phẩm.
public class Product{

    private int code;
    private String name;
    private double price;

    public Product(int code, String name, double price) {
        this.code = code;
        this.name = name;
        this.price = price;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Product{ " + code + ", " + name + ", " + price + '}';
    }
}
Muốn sắp xếp được thì ta implement phương thức compareTo() của interface java.util.Comparable. Ví dụ ta so sánh hai đối tượng product1 với product2 thì phương thức compareTo(Product product2) trả về:
  • 0 nếu product1 và product2 có giá bằng nhau.
  • Số dương nếu product1 có giá lớn hơn giá của product2.
  • Số âm nếu product1 có giá nhỏ hơn giá của product2.
public class Product implements Comparable<Product> {
    //....
    @Override
    public int compareTo(Product o) {
        //this case we compare product by price

        //this product and o are the same
        if (this.price == o.price) {
            return 0;
        }
        //this product is greater than o
        if (this.price > o.price) {
            return 1;
        }
        //this product is less than o
        return -1;
    }
}
Và mã để sắp xếp danh sách Product
    public static void main(String[] args) {
        //Instantiate an object of list product
        List<Product> products = new LinkedList<Product>();

        //Prepare mock data to test
        products.add(new Product(1, "TV", 300));
        products.add(new Product(2, "Iphone", 600));
        products.add(new Product(3, "Sony Vaio E", 200));
        products.add(new Product(4, "Asus E", 800));

        //Sort list
        java.util.Collections.sort(products);

        //print sorted list
        for (Product p : products) {
            System.out.println(p);
        }
    }
Kết quả:
Product{code=3, name=Sony Vaio E, price=200.0}
Product{code=1, name=TV, price=300.0}
Product{code=2, name=Iphone, price=600.0}
Product{code=4, name=Asus E, price=800.0}

Ví dụ này mới chỉ hướng dẫn bạn sắp xếp một List, nhưng bạn hoàn toàn có thể sắp xếp bất kỳ đối tượng Collection nào. Nếu bạn muốn sắp xếp một mảng thì có thể dùng phương thức sort của java.util.Arrays.

Kết luận

Như vậy, bạn đã hoàn thành phần sắp xếp một cách đơn giản và dễ dàng. Nhưng đây mới chỉ là sắp xếp theo một tiêu chí, vậy nếu ta muốn sắp xếp theo nhiều tiêu chí (ví dụ: sắp xếp theo tên và giá) thì làm thế nào? Tôi sẽ giúp bạn trả lời câu hỏi này ở bài viết sau.
Source Code

About Học viện đào tạo trực tuyến

Xinh chào bạn. Tôi là Đinh Anh Tuấn - Thạc sĩ CNTT. Email: dinhanhtuan68@gmail.com .
- Nhận đào tạo trực tuyến lập trình dành cho nhà quản lý, kế toán bằng Foxpro, Access 2010, Excel, Macro Excel, Macro Word, chứng chỉ MOS cao cấp, IC3, tiếng anh, phần mềm, phần cứng .
- Nhận thiết kế phần mềm quản lý, Web, Web ứng dụng, quản lý, bán hàng,... Nhận Thiết kế bài giảng điện tử, số hóa tài liệu...
HỌC VIỆN ĐÀO TẠO TRỰC TUYẾN:TẬN TÂM-CHẤT LƯỢNG.
«
Next
Bài đăng Mới hơn
»
Previous
Bài đăng Cũ hơn