[Java Cơ Bản]Sắp Xếp Mảng Các đối Tượng | Code And Play Game
Có thể bạn quan tâm
Khỏi phải nói dài dòng vì ai lập trình cũng biết việc sắp xếp được dùng đi dùng lại rất nhiều trong lập trình và cuộc sống. Có thể kể ra vài trường hợp như: Sắp xếp các sinh viên trong lớp, sắp xếp nhân viên trong công ty,… Trong bài viết này chúng ta sẽ cùng tìm hiểu cách sắp xếp với ví dụ sắp xếp sinh viên trong lớp.
Level 1: Nhập vào tên các sinh viên. Sắp xếp và in ra màn hình danh sách sinh viên đã sắp xếp.
Quá dễ phải không? – Vì đề bài không cho trước số sinh viên trong lớp, chỉ biết có thể có 1 hoặc nhiều sinh viên => dùng ArrayList – Chỉ quan tâm đến tên => dùng ArrayList<String> – Để sắp xếp List, ArrayList,… chúng ta dùng Collections.sort(), với những mảng như String[], int[] thì dùng Arrays.sort().

code

result
Level 2: Mỗi sinh viên sẽ được lưu theo tên và điểm. Sắp xếp theo điểm số của sinh viên.
Bắt đầu đến đây chúng ta cần phải xây dựng class Student với 2 thuộc tính: name, score. Và class StudentController chứ 1 ArrayList<Student> để quản lý, sắp xếp Student.

src

class Student

StudentController
Như các bạn đã thấy, Collections.sort báo đỏ. Vì Collections chỉ sắp xếp những Object nào Comparable. Vậy chúng ta sẽ phải quay trở về cách sắp xếp truyền thống? Rất may cho chúng ta là Java đã xây dựng interface Comparable để giúp chúng ta. Cách sử dụng các bạn tham khảo dưới đây nhé: – Đầu tiên, cho Student implement Comparable<Student>. Bạn sẽ phải override lại hàm compareTo(Student o), hãy xem các trường hợp return: return 0 => không đổi vị trí của student đang xét và o return ra số dương => chỉ số đang xét của thằng nào lớn hơn lên trước
return ra số âm => ngược với dương
Trong bài này mình sẽ sắp xếp điểm từ cao đến thấp. Các bạn có thể thử ngược lại nhé.

Student fixed
– Vì Student lúc này không phải String nên chúng ta cũng sẽ sửa lại method showListStudent như sau:

showListStudent fixed
Và kết quả khi run:
Level 3: In danh sách sinh viên đã sắp xếp theo điểm. Sau đó chọn 3 sinh viên điểm cao nhất đi thi. Nếu cùng điểm thì xét tên theo thứ tự Z->A (Ví dụ có 2 người B và A cùng điểm mà chỉ được chọn 1 thì ta chọn B).
Dùng Comparable chỉ cho phép so sánh 1 lần duy nhất vì chỉ có 1 hàm CompareTo. Vậy chúng ta phải làm thế nào? Đây là lúc chúng ta dùng tới Comparator. Nếu các bạn để ý thì Collections.sort() có thể truyền vào 2 tham số: List các phần tử và 1 Comparator để dựa vào đó nó sẽ sắp xếp. Mỗi lần muốn sắp xếp theo tiêu chí nào ta sẽ viết thêm 1 Comparator cho tiêu chí đó.
Ở đây mình sẽ thêm studentScoreAndNameComparator có kiểu Comparator vào class Student và set nó là public static để có thể gọi dễ dàng.

Student
Và ở StudentController chúng ta sẽ thêm method sortByStudentScoreAndName và method showTop3Student()

StudentController
Và giờ test thôi:
Code: https://github.com/tungbt94/Java-sort-tut.git Có 3 commit tương ứng code của 3 level. Các bạn có thể down về và xem nhé.
Ở bài này chúng ta đã cùng tìm hiểu cách sắp xếp mảng các Object bất kỳ. Bài tiếp theo trong loạt bài Java cơ bản chúng ta sẽ cùng đi tìm hiểu về cách lưu vào file nhé.
Chia sẻ:
- X
Có liên quan
Từ khóa » Hàm Sắp Xếp Tên Java
-
Sắp Xếp Chuỗi Theo Thứ Thự Bảng Chữ Cái - Freetuts
-
Java - Sắp Xếp Danh Sách Họ Và Tên Theo Thứ Tự Từ điển - YouTube
-
Sắp Xếp Trong Java 8 - Viblo
-
So Sánh Và Sắp Xếp Trong Java - Openplanning
-
[Java Cơ Bản] Sắp Xếp đối Tượng Trong Java Với Comparable Và ...
-
Làm Thế Nào Tôi Có Thể Sắp Xếp Một Danh Sách Theo Thứ Tự Abc?
-
Bài Tập Java - Sắp Xếp Mảng Theo Thứ Tự Tăng Dần - VietTuts
-
Sắp Xếp Theo Nhiều Tiêu Chí Collection Trong Java - Dạy Nhau Học
-
Cách Sắp Xếp Một Mảng Trong Java - TutorialCup
-
Java: Sắp Xếp Trong Collection | V1Study
-
Sắp Xếp Danh Sách Theo Bảng Chữ Cái Tiếng Việt - CongDongJava
-
Cách Sắp Xếp Danh Sách Theo Thứ Tự / How To Sort A List/Array By ...
-
Bài 36: Sắp Xếp Các đối Tượng Trong ArrayList - Developer Softwares
-
[JAVA] QUICK SORT: Thuật Toán Sắp Xếp Nhanh - NIIT - ICT Hà Nội