× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Giao diện so sánh trong Java - Tìm hiểu thêm về giao diện so sánh Java

09/08/2021 01:58

Trong nhiều tình huống, chúng ta cần so sánh hai giá trị trong các chương trình Java của mình. Việc so sánh các giá trị nguyên thủy như int, char, float, boolean,.., rất dễ dàng và chúng ta có thể so sánh chúng bằng cách sử dụng các toán tử so sánh như <,>, ==,... Nhưng nếu chúng ta muốn so sánh các đối tượng thì sao? Với mục đích này, Java sẽ cung cấp cho chúng ta hai giao diện, đó là giao diện có thể so sánh Comparable và giao diện bộ so sánh Comparator trong Java. Trong bài viết này, chúng ta sẽ tìm hiểu về giao diện so sánh trong Java là gì cùng ví dụ với cách làm việc của Collections.Sort ().

 

Giao diện so sánh trong Java - Giao diện so sánh trong Java là gì?

Giao diện so sánh trong Java là gì? Giao diện so sánh trong Java được sử dụng để sắp xếp các đối tượng của các lớp do người dùng định nghĩa. Ví dụ, đối với danh sách các đối tượng của sinh viên, thứ tự tự nhiên có thể là thứ tự của id duy nhất của nhân viên. Nhưng trong các ứng dụng thực tế, chúng ta có thể muốn sắp xếp danh sách sinh viên theo tên, ngày sinh, năm nhập học hoặc đơn giản là bất kỳ tiêu chí nào khác. Trong những điều kiện như vậy, chúng ta cần có giao diện Bộ so sánh ( Comparator interface).

Giao diện Comparator của Java có trong gói java.util. Giao diện này chứa 2 phương thức so sánh (Object obj1, Object obj2) và equals (Phần tử đối tượng).

Theo mặc định, chúng ta không thể so sánh các đối tượng của một lớp do người dùng định nghĩa. Để làm cho một đối tượng của một lớp do người dùng định nghĩa có thể so sánh được, lớp đó phải triển khai giao diện so sánh Java Comparable.

Chúng ta có thể sử dụng giao diện so sánh Java trong các trường hợp sau:

  • Sử dụng để sắp xếp hoặc sắp xếp danh sách hoặc mảng đối tượng, khác với thứ tự tự nhiên.
  • Để sắp xếp mảng hoặc danh sách các đối tượng mà chúng ta không thể sửa đổi mã nguồn của một đối tượng để triển khai một giao diện có thể so sánh được.
  • Sử dụng để sắp xếp cùng một mảng hoặc danh sách các đối tượng trong các trường khác nhau.
  • Để sử dụng nhóm bằng cách sắp xếp theo danh sách hoặc mảng đối tượng trong các trường khác nhau.

>>> Tham khảo: Khóa học Lập trình Java

Phương thức của giao diện so sánh trong Java

Có hai phương pháp của Giao diện so sánh trong Java, đó là:

 

Phương thức

Mô tả

compare(Object obj1,Object obj 2)

So sánh đối tượng đầu tiên với đối tượng khác.

equals(Object obj)

So sánh đối tượng hiện tại với đối tượng được chỉ định.

>>> Đọc thêm: Interface trong Java - Tìm hiểu về giao diện trong Java

Phương thức Comparator.compare ()

Phương pháp so sánh được sử dụng để so sánh hai đối tượng.

Cú pháp của nó là:

public int compare(Object obj1, Object obj2)

Phương thức này so sánh hai đối số của nó theo thứ tự. Nó trở lại -

  • một số nguyên âm  nếu đối số đầu tiên nhỏ hơn đối số thứ hai.
  • 0, nếu đối số đầu tiên bằng đối số thứ hai.
  • một số nguyên dương, nếu đối số đầu tiên lớn hơn đối số thứ hai.

Ví dụ:

Giả sử chúng ta có một mảng Java hoặc một danh sách mảng của lớp riêng chứa các trường như id duy nhất, tên, tuổi, giới tính, v.v. và chúng ta phải sắp xếp danh sách theo thứ tự tên hoặc tuổi. Đối với điều này, chúng ta có thể làm theo hai cách tiếp cận như sau:

Phương pháp 1:

Một cách tiếp cận rõ ràng là soạn phương thức sort () của riêng chúng ta bằng cách viết các phép tính chuẩn trong đó. Điều này sẽ yêu cầu xem qua toàn bộ mã cho nhiều cơ sở khác nhau như id, tên, v.v.

Phương pháp 2:

Sử dụng cách tiếp cận này, chúng ta có thể sử dụng giao diện bộ so sánh - Giao diện bộ so sánh Java sắp xếp các đối tượng của một lớp do người dùng định nghĩa. Giao diện này trong Java có sẵn trong gói gói java.util và chứa 2 hàm so sánh (Object obj1, Object obj2) và equals(Object obj).\

>>> Đọc thêm: Reflection trong Java - Tìm hiểu nhanh về Reflection trong 5 phút

Quy tắc sử dụng Giao diện so sánh Java

Có một số quy tắc nhất định để sử dụng Giao diện so sánh Java, chúng như sau:

  • Bạn cần triển khai giao diện Comparator nếu bạn muốn sắp xếp các phần tử của một tập hợp.
  • Bạn sẽ cần phải đề cập đến loại tham số là Đối tượng khi bạn ghi đè phương thức so sánh (). Bởi vì, nếu bạn không chỉ định bất kỳ loại đối tượng nào trong giao diện Comparator  của mình, thì theo mặc định, nó sẽ giả định rằng bạn sắp xếp các đối tượng kiểu Đối tượng.
  • Nếu bạn muốn sắp xếp các phần tử của kiểu do người dùng xác định, thì bạn cần chỉ định chung kiểu do người dùng xác định trong khi triển khai giao diện Comparator . Khi bạn không chỉ định kiểu do người dùng xác định trong khi triển khai giao diện, thì theo mặc định, nó sẽ giả định chúng thuộc kiểu Đối tượng.

So sánh giao diện có thể so sánh Comparable và giao diện bộ so sánh Comparator trong Java.

Comparator 

Comparable

Comparator sắp xếp các thuộc tính của các đối tượng khác nhau.

Giao diện so sánh sắp xếp các đối tượng với thứ tự tự nhiên.

Giao diện Comparator so sánh các đối tượng của hai lớp khác nhau.

Giao diện có thể so sánh so sánh tham chiếu “this” của đối tượng được chỉ định.

Comparator  có trong gói java.util .

So sánh có trong gói java.lang .

Comparator không ảnh hưởng đến lớp gốc.

Có thể so sánh ảnh hưởng hoặc sửa đổi lớp gốc

Comparator cung cấp các phương thức so sánh () và equals () để sắp xếp các phần tử.

So sánh cung cấp một phương thức CompareTo () để sắp xếp các phần tử.

 

Kết luận: Đến phần cuối của bài viết, chúng ta đã tìm hiểu khái niệm Giao diện so sánh trong Java với ví dụ của nó. Chúng ta cũng đã thảo luận về Collections.Sort () với sự trợ giúp của mã Java và cũng phải biết các quy tắc mà bạn nên tuân theo khi sử dụng giao diện Comparator trong Java.

Cảm ơn bạn đã đọc bài viết của chúng tôi, nếu bạn có bất kỳ thắc mắc nào liên quan đến Giao diện so sánh Java, hãy cho chúng tôi biết bằng cách để lại bình luận bên dưới. Đừng quên tham khảo thêm các khóa học lập trình về Java và các ngôn ngữ khác tại Viện công nghệ thông tin T3H bạn nhé!

Nguồn: techvidvan.com