30/09/2018, 18:23
Sắp xếp theo nhiều tiêu chí Collection trong Java
Em có một lớp SinhVien(String maSV, String tenSV, int diem)
Em dùng một ArrayList chứa danh sách Sinh viên này
Sắp xếp List này theo tên thì em làm như sau:
public void sapXep() {
Collections.sort(dsSV, new Comparator<SinhVien>() {
@Override
public int compare(SinhVien sv1, SinhVien sv2) {
return sv1.getTenSV().compareTo(sv2.getTenSV());
}
});
}
Nhưng giờ em muốn săp xếp mảng này theo 2 tiêu chí đồng thời đó là theo cả tên và điểm
Tức là theo điểm trước cùng điểm thì sắp theo tên
Trần văn A 10
Trần văn B 10
Trần văn C 10
Lê văn D 9
trần văn E 9
Vậy phải làm sao? Mong các anh chị có kinh nghiệm giúp em. Em cảm ơn ạ!
Bài liên quan
như thế này chắc OK, thử xem
Bạn rất giống ý tưởng mình, nhưng không được hic
thử vậy:
ref : http://stackoverflow.com/questions/6850611/sort-a-list-of-objects-by-multiple-fields
Cảm ơn bạn mình đã thành công
Nếu có tới 5 thuộc tính thì sắp kiểu gì nhỉ?
Cũng tượng tự như 2 thôi, if-esle hơi nhiều tý, trong link ở trên nó compare 3 field đó, có một số thư viện hỗ trở ngắn hơn ref: http://blog.projectnibble.org/2013/06/21/ways-to-sort-lists-of-objects-in-java-based-on-multiple-fields/
Java 8 Lambda Expression:
Vậy nếu mình muốn viết thêm 1 method để sắp xếp theo điều kiện khác nữa thì sao các bạn? Override 2 lần thì nó mất lần đầu rồi…
Bạn đưa điều kiện đấy ra đây.
Ví dụ 1 danh sách gồm giảng viên cơ hữu và giảng viên bán cơ hữu. Đầu tiên là sắp xếp danh sách gv cơ hữu làm việc trên 10 năm, sau đó lại sắp xếp giảng viên bán cơ hữu có học vị từ tiến sĩ trở lên…
Bạn search Java Lambda Expression rồi tự học và áp dụng vào trường hợp của bạn nhé. Nếu không thì làm theo cách cổ điển là dùng Comparator là ok.