Có thể so sánh và so sánh trong Java

Sự khác biệt chính giữa Bộ so sánh và Bộ so sánh trong Java

  • Có thể so sánh ở Java là một đối tượng để so sánh chính nó với một đối tượng khác, trong khi Comparator là một đối tượng để so sánh các đối tượng khác nhau của các lớp khác nhau.
  • So sánh được cung cấp compareTo() phương pháp sắp xếp các phần tử trong Java, trong khi Comparator cung cấp compare() phương pháp sắp xếp các phần tử trong Java.
  • Một giao diện tương đương có sẵn trong java.lang gói, trong khi giao diện Comparator có trong java.util Gói.
  • Comparable cung cấp một chuỗi sắp xếp duy nhất, trong khi Comparator cung cấp nhiều chuỗi sắp xếp.
  • Comparable ảnh hưởng đến lớp gốc, trong khi Comparator không ảnh hưởng đến lớp gốc.

Sự khác biệt giữa so sánh và so sánh
Sự khác biệt giữa so sánh và so sánh

Ở đây, tôi đã phân tích sự khác biệt giữa So sánh và So sánh và sẽ đánh giá toàn diện ưu và nhược điểm của chúng.

Cái gì có thể so sánh được ở Java?

So sánh in Java là một đối tượng so sánh chính nó với một đối tượng khác. Nó giúp sắp xếp danh sách các đối tượng tùy chỉnh. Java.lang.Giao diện có thể so sánh phải được một lớp triển khai để so sánh các phiên bản của nó. Một mảng các đối tượng thực hiện một giao diện có thể so sánh được sắp xếp tự động theo Arrays.sortCollections.sort phương pháp.

Phương pháp được sử dụng trong Comparable

Tôi muốn nêu bật một phương thức quan trọng mà tôi thường xuyên sử dụng trong giao diện Comparable:

So với():

Phương thức CompareTo() được sử dụng để thực hiện sắp xếp tự nhiên trên một chuỗi. Ý nghĩa của sắp xếp tự nhiên là thứ tự sắp xếp áp dụng cho đối tượng, ví dụ, thứ tự số để sắp xếp số nguyên, thứ tự chữ cái cho Chuỗi, v.v.

Cú pháp của CompareTo() như sau:

int compareTo(T obj)

Trong cú pháp trên, T biểu thị loại đối tượng bạn sẽ so sánh.

CompareTo() phương pháp so sánh đối tượng với T obj.

Đầu ra:

  • Nó trả về 0 nếu các giá trị bằng nhau.
  • Nếu đối tượng có giá trị thấp hơn thì phương thức này trả về giá trị âm.
  • Nếu đối tượng có giá trị cao hơn, nó sẽ trả về giá trị dương.

Một ví dụ về so sánh được trong Java

Chương trình sau đây của Java Ví dụ có thể so sánh cho thấy sự so sánh của hai ký tự “a” và “b”. Ký tự “a” đứng trước “b” theo thứ tự bảng chữ cái.

Do đó, đầu ra là -1. Ký tự “b” đứng sau “a” theo thứ tự bảng chữ cái. Do đó, đầu ra là 1. Các ký tự “a” và “b” đều tương đương nhau. Do đó, đầu ra là 0.

public class Sample_String {
    public static void main(String[] args) {
        String str_Sample = "a";
        System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));
        str_Sample = "b";
        System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));
        str_Sample = "b";
        System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));
    }
}

Đầu ra

Compare To 'a' b is : -1
Compare To 'b' a is : 1
Compare To 'b' b is : 0

Bộ so sánh trong Java?

Một bộ so sánh in Java là một đối tượng để so sánh các đối tượng khác nhau của các lớp khác nhau. Giao diện so sánh trong Java cũng đượ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. Nó bao gồm hai phương thức giao diện so sánh quan trọng được gọi là so sánh (Object obj1, Object obj2) và bằng (Phần tử đối tượng).

Phương thức được sử dụng trong Bộ so sánh

Trong thực tế, tôi thường dựa vào các phương pháp quan trọng sau đây của giao diện so sánh:

So sánh():

Compare() cho phép bạn đặt hàng các đối tượng. Để làm điều này, bạn phải tạo một lớp thực hiện giao diện so sánh. Sau này, bạn cần ghi đè phương thức so sánh của nó.

Cú pháp của compare() như sau:

compare(Object obj1, Object obj2)

Trong cú pháp trên, obj1 và obj2 là hai đối tượng mà bạn phải so sánh bằng phương thức so sánh(). compare() phương pháp.

Đầu ra:

  • Nó trả về một số nguyên âm nếu đối số đầu tiên nhỏ hơn đối số thứ hai.
  • Trả về 0 nếu đối số thứ nhất và đối số thứ hai bằng nhau.
  • Phương thức này có thể trả về một số nguyên dương trong trường hợp đối số thứ nhất lớn hơn đối số thứ hai.

Bạn phải đảm bảo rằng mối quan hệ là bắc cầu. Ví dụ: ((compare(a, b)>0) && (compare(b, c)>0)) ngụ ý so sánh(a, c)>0.

Một ví dụ về so sánh được trong Java

Ở phía dưới Java ví dụ so sánh, có 6 biến. “x”, “y”, “p”, “q”, “r” và “s”. Đầu ra là -1 vì giá trị của “x”, 20 nhỏ hơn giá trị của “y”, 30. Đầu ra là 0 vì giá trị của “p”, 40 bằng giá trị của “q”, 40 .

import java.lang.Integer; 
public class example { 
    public static void main(String args[]) 
    { 
        int x = 20; 
        int y = 30; 
        // as 10 less than 20, 
        // Output will be a value less than zero 
        System.out.println(Integer.compare(x, y)); 
        int p = 40; 
        int q = 40; 
        // as 30 equals 30, 
        // Output will be zero 
        System.out.println(Integer.compare(p, q)); 
        int r = 20; 
        int s = 7; 
        // as 15 is greater than 8, 
        // Output will be a value greater than zero 
        System.out.println(Integer.compare(r, s)); 
    } 
}

Đầu ra:

-1
0
1

Bằng():

Equals() xác minh xem đối tượng số có bằng đối tượng được truyền dưới dạng đối số hay không.

Cú pháp của equals() như sau:

public boolean equals(Object o)

Phương thức này có hai tham số: 1) bất kỳ đối tượng nào và 2) giá trị trả về. Nó trả về true nếu đối số được truyền không phải là null và là một đối tượng thuộc loại tương tự có cùng giá trị số.

Ví dụ về phương thức bằng:

Trong ví dụ dưới đây, tôi sẽ so sánh bốn biến với nhau. Ba biến có kiểu số nguyên và một biến có kiểu ngắn. Kết quả đầu tiên là sai vì giá trị của p là 5, không bằng giá trị của q là 20.

Kết quả thứ hai là đúng vì giá trị của biến p và r giống nhau, bằng 5. Cuối cùng, đầu ra là sai, vì biến p và s có giá trị được gán khác nhau.

public class Test { 
   public static void main(String args[]) {
      Integer p = 5;
      Integer q = 20;
      Integer r =5;
      Short s = 5;
      System.out.println(p.equals(q));  
      System.out.println(p.equals(r)); 
      System.out.println(p.equals(s));
   }
}

Đầu ra

false
true
false

Sự khác biệt giữa Bộ so sánh và Bộ so sánh trong Java

Tôi thường thấy sự nhầm lẫn giữa Java Có thể so sánh và so sánh; đây là sự khác biệt chính:

Sự khác biệt giữa So sánh và So sánh trong Java
Sự khác biệt giữa So sánh và So sánh trong Java

Cơ sở so sánh So sánh So sánh
Phương pháp So sánh cung cấp compareTo() phương pháp sắp xếp các phần tử trong Java. Bộ so sánh cung cấp compare() phương pháp sắp xếp các phần tử trong Java.
Bưu kiện Một giao diện tương đương có sẵn trong java.lang Gói. Một giao diện so sánh có mặt trong java.util Gói.
Logic sắp xếp Logic sắp xếp phải cùng lớp với đối tượng bạn sắp sắp xếp. Logic sắp xếp phải nằm trong các lớp riêng biệt để viết các loại khác nhau dựa trên các thuộc tính khác nhau của đối tượng.
Đối tượng lớp Lớp có đối tượng bạn muốn sắp xếp phải triển khai giao diện Comparable. Một lớp có các đối tượng bạn muốn sắp xếp không cần triển khai giao diện so sánh.
Sắp xếp trình tự Nó cung cấp trình tự sắp xếp đơn. Nó cung cấp nhiều trình tự sắp xếp.
Thứ tự sắp xếp Phương pháp này có thể sắp xếp dữ liệu theo thứ tự sắp xếp tự nhiên. Phương pháp này sắp xếp dữ liệu theo thứ tự sắp xếp tùy chỉnh.
Lớp Nó ảnh hưởng đến lớp ban đầu. tức là lớp thực tế bị thay đổi. Nó không ảnh hưởng đến lớp ban đầu, tức là lớp thực tế không bị thay đổi.
Sử dụng Được triển khai thường xuyên trong API theo các lớp Lịch, Trình bao bọc, Ngày và
Chuỗi.
Nó được triển khai để sắp xếp các phiên bản của lớp bên thứ ba.
Thực hiện Tất cả các lớp trình bao bọc và các lớp chuỗi đều triển khai các giao diện có thể so sánh được. Các lớp Comparator được triển khai duy nhất là Collator và RuleBasedColator.

Các phương pháp hay nhất khi sử dụng Bộ so sánh và Có thể so sánh trong Java

  • Sử dụng giao diện có thể so sánh khi so sánh là tiêu chuẩn cho lớp cụ thể.
  • Bạn có thể sử dụng lambdas với bộ so sánh.
  • Nhiều lớp cốt lõi có sẵn triển khai giao diện có thể so sánh được.
  • Có thể sử dụng TreeSet và TreeMap trong khi sắp xếp Tập hợp hoặc Bản đồ.
  • Sản phẩm compareTo() phương pháp hoạt động với bộ so sánh cũng như so sánh.
  • Chỉ sử dụng giao diện so sánh khi bạn < cần linh hoạt hơn.
  • Sản phẩm compareTo() phương thức sẽ trả về một số nguyên dương nếu đối tượng đầu tiên lớn hơn đối tượng kia, âm nếu nó thấp hơn và bằng 0 nếu cả hai đều giống nhau.

Cách chọn giữa cái có thể so sánh được và cái so sánh

Tóm lại, kinh nghiệm thực tế của tôi cho thấy rằng việc tận dụng Bộ so sánh và Bộ so sánh trong Java nâng cao đáng kể khả năng kiểm soát của chúng ta đối với việc phân loại dữ liệu, cải thiện cả hiệu suất và chức năng.