Cách Sắp Xếp Danh Sách Theo Thứ Tự / How To Sort A List/Array By ...

Tổng cộng có ít nhất 4 Classes:

  1. Class chứa hàm Main để chạy chương trình
  2. Class chủ thể (Object) để tạo một object và chứa các hàm liên quan đến chủ thể
  3. Class List để tạo danh sách các object và chứa các hàm liên quan đến list
  4. Class so sánh các chủ thể trong list theo thành phần và thứ tự mong muốn

(2) Object Class

Class này dùng để tạo các chủ thể riêng lẻ gồm:

  • Các thông tin/giá trị mà các chủ thể cần có
  • Constructor để hàm main tạo được một chủ thể
  • Hàm lấy từng thông tin nhỏ của chủ thể

Ví dụ mình có 5 sản phẩm cần đăng lên website, mỗi sản phẩm gồm thông tin là tên sản phẩm và giá tiền. Vậy thì mình phải khởi tạo các mục thông tin cho nó với thông tin mặc định: tên là “unknow – không biết” và giá tiền “0” đồng. Sau đó mình tạo Constructor để class main có thể tạo một sản phẩm mới. Sau đó mình tạo một hàm để lấy được thông tin giá tiền sau khi tạo sản phẩm.

public class SanPham { //tạo các trường thông tin private String name = "unknown"; private int price = 0; //đây là constructor public Item(String name, int price){ this.name = name; this.price = price; } //tạo hàm lấy thông tin giá tiền public int getPrice(){ return this.price; } }

(3) Class List và hàm sắp xếp

Class này cần có:

  • Tạo một bảng danh sách chứa thông tin
  • Hàm thêm một sản phẩm vào danh sách
  • Hàm sắp xếp để tiến hành sắp xếp danh sách
  • Hàm in ra
public class DanhSach { //tạo danh sách private ArrayList<SanPham> danhSach = new ArrayList<Item>(); //tạo hàm để add sản phẩm vào danh sách public void addItem(Item item){ danhSach.add(item); } //tạo hàm để sắp xếp theo thứ tự giá tiền public void byPrice(){ Collections.sort(danhSach, new SortByPrice); } //tạo hàm toString để in ra public String toString() { return danhSach.toString(); } }

Lúc này, SortByPrice sẽ hiện màu đỏ vì chưa được tạo, nhưng ko sao, bước tiếp theo thì mình sẽ tạo.

(4) Class Comparator (mục cần so sánh)

Trong ví dụ này, mình giả sử là sắp xếp theo giá tiền từ thấp đến cao (hay thấy trong các trang mua bán trực tuyến)

public class SortByPrice implements Comparator <Object> { public int compare(Object o1, Object o2){ return o1.getPrice() - o2.getPrice(); } }

Lưu ý: hàm compare này luôn trả về int (tức là số), nhưng nhiều khi mục mình cần so sánh không phải là số (int) mà là sắp xếp theo thứ tự chữ cái abc (String), ví dụ như sắp xếp theo tên sản phẩm thì sao? Thì chỉ cần thay dòng return thành vầy:

return o1.getName().compareTo(o2.getName());

Muốn thứ tự ngược lại thì chỉ cần đổi o2 trước o1 là được.

(1) Class Main

Okay, công tác chuẩn bị đã xong rồi, giờ chỉ cần viết lệnh ở hàm main rồi tận hưởng thành quả thôi 😛

public class BoatMaker { public static void main(String[] args) { //tạo một danh sách DanhSach banHang = new DanhSach(); //thêm sản phẩm vào danh sách mới tạo banHang.addItem(new Item("Ao", 10000)); banHang.addItem(new Item("Quan", 5000)); //chạy hàm sắp xếp banHang.byPrice(); System.out.println(banHang); } } }

Share this:

  • X
  • Facebook
Like Loading...

Related

Từ khóa » Hàm Sắp Xếp Tên Java