Phân biệt Comparable và Comparator trong Java
Comparable Comparator trong Java rất hữu ích để sắp xếp tập hợp các đối tượng. Ở bài viết này chúng ta sẽ tìm hiểu cách nó hoạt động, xem một số ví dụ và phân biệt chúng.
Comparable Comparator trong Java rất hữu ích để sắp xếp tập hợp các đối tượng. Ở bài viết này chúng ta sẽ tìm hiểu cách nó hoạt động, xem một số ví dụ và phân biệt chúng.
Java cung cấp hai giao diện để sắp xếp các đối tượng bằng cách sử dụng các thành viên dữ liệu của lớp:
Sắp xếp sử dụng Comparable Interface
Một đối tượng comparable có khả năng so sánh chính nó với một đối tượng khác. Bản thân lớp phải implement inteface java.lang.Comparable để so sánh các thể hiện của nó. Hãy xem xét một lớp Movie có các thành viên như, xếp hạng, tên, năm. Giả sử chúng ta muốn sắp xếp một danh sách phim dựa trên năm phát hành. Chúng ta có thể triển khai như sau
1. Implement inteface java.lang.Comparable cho lớp Movie (Phim)
2. Ghi đè phương thức compareTo() của inteface java.lang.Comparable
Output:
Movies after sorting : Star Wars 8.7 1977 Empire Strikes Back 8.8 1980 Return of the Jedi 8.4 1983 Force Awakens 8.3 2015
Bây giờ, giả sử chúng ta muốn phân loại phim theo xếp hạng và tên của chúng. Khi chúng ta làm cho một phần tử tập hợp có thể so sánh được (bằng cách trên), chúng ta chỉ có một cơ hội để triển khai phương thức compareTo (). Vì thế giải pháp bây giờ chính là sử dụng Comparator.
Sắp xếp sử dụng Comparator
Không giống như cách 1, Comparator nằm ngoài kiểu phần tử mà chúng ta đang so sánh. Đó là một lớp riêng biệt. Chúng ta sẽ tạo nhiều lớp riêng biệt (triển khai Comparator) để so sánh bởi các thành viên khác nhau. Lớp Collections có một phương thức sort () và nó sử dụng Comparator. Phương thức sort() gọi compare() để sắp xếp các đối tượng. Để áp dụng, chúng ta cần thực hiện 3 điều sau:
Phân biệt Comparable và Comparator
Comparable giúp bản thân đối tượng phải biết nó được sắp xếp như thế nào. Trong khi, việc sắp xếp dùng Comparator được thực hiện thông qua một lớp riêng biệt.
Về mặt logic,Comparable tham chiếu “this” với đối tượng được chỉ định và Comparator so sánh hai đối tượng khác nhau được cung cấp. Nếu bất kỳ lớp nào triển khai Comparable trong Java thì tập hợp của đối tượng đó (ví dụ: Array, List) có thể được sắp xếp tự động bằng cách sử dụng phương thức Collections.sort() hoặc Arrays.sort() và các đối tượng sẽ được sắp xếp dựa trên thứ tự tự nhiên được xác định bởi phương thức compareTo().
Một đặc điểm khác biệt cơ bản là sử dụng so sánh, chúng ta chỉ có thể sử dụng một so sánh. Trong khi đó, ta có thể viết nhiều hơn một bộ so sánh tùy chỉnh cho một loại nhất định. Giống như trong ví dụ về Comparable, ta chỉ có thể sắp xếp theo một thuộc tính, nhưng trong bộ so sánh, ta có thể sắp xếp theo các thuộc tính khác nhau như xếp hạng, tên và năm.
Tóm lại, nếu việc sắp xếp các đối tượng cần dựa trên thứ tự tự nhiên thì hãy sử dụng So sánh trong khi nếu bạn sắp xếp cần được thực hiện trên các thuộc tính của các đối tượng khác nhau, thì hãy sử dụng Bộ so sánh trong Java.
Công nghệ lượng tử khai thác một số hiện tượng gần như huyền bí của cơ học lượng tử để mang lại những bước tiến vượt bậc về sức mạnh xử lý. Máy lượng tử hứa hẹn sẽ vượt xa những siêu máy tính có khả năng xử lí tốt nhất hiện nay, hứa hẹn sẽ tạo ra những tiến bộ thú vị trong nhiều lĩnh vực khác nhau, từ khoa học vật liệu đến nghiên cứu dược phẩm. Các công ty đang thử nghiệm công nghệ này để phát triển những thứ như nguồn pin mạnh hơn cho ô tô điện, tạo ra các loại thuốc mới,...
Comparable Comparator trong Java rất hữu ích để sắp xếp tập hợp các đối tượng. Ở bài viết này chúng ta sẽ tìm hiểu cách nó hoạt động, xem một số ví dụ và phân biệt chúng.
Hiện có rất nhiều phần mềm Engine hỗ trợ việc lập trình game từ di động đến desktop, như Game Maker Studio, Unreal Engine 4, … trong đó có Unity. Nhìn sơ qua thì Unity có thể là một nền tảng khá khó cho người mới học, họ dễ bị sốc kiến thức khi lần đầu tiếp cận unity vì nó cung cấp 1 lượng lớn thư viện hỗ trợ gồm các thư viện Asset đồ sộ, các model, được dựng sẵn.