Computer >> Máy Tính >  >> Lập trình >> Java

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

So sánh và so sánh đều là một giao diện có thể được sử dụng để sắp xếp các phần tử của tập hợp. Giao diện so sánh thuộc về gói java.util trong khi có thể so sánh thuộc về gói java.lang. Bộ sưu tập sắp xếp giao diện so sánh sử dụng hai đối tượng được cung cấp cho nó, trong khi giao diện so sánh so sánh "cái này" đề cập đến một đối tượng được cung cấp cho nó.

Phương thức Phương thức
Sr. Không. Phím Có thể so sánh được Bộ so sánh
1 Phương thức
Giao diện có thể so sánh có phương thức CompareTo (Đối tượng a)
Bộ so sánh có phương thức so sánh (Đối tượng o1, Đối tượng O2)
2
Sử dụng sắp xếp
Collection.sort (Danh sách) có thể được sử dụng để sắp xếp tập hợp các đối tượng kiểu So sánh.
Collection.sort (List, Comparator) có thể được sử dụng để sắp xếp tập hợp các đối tượng kiểu Comparator.
3
Trình tự sắp xếp
So sánh cung cấp trình tự sắp xếp duy nhất.
Bộ so sánh cung cấp nhiều chuỗi sắp xếp.
4
Gói
Giao diện có thể so sánh thuộc về gói java.lang.
Giao diện so sánh thuộc gói java.util.

Ví dụ về Có thể so sánh

public class ComparableExample {
   public static void main(String[] args) {
      List<Laptop> laptopList = new ArrayList<>();
      laptopList.add(new Laptop("HCL", 16, 800));
      laptopList.add(new Laptop("Apple", 8, 100));
      laptopList.add(new Laptop("Dell", 4, 600));
      Collections.sort(laptopList);
      for (Laptop lap : laptopList) {
         System.out.println(lap.getRam());
      }
   }
}
public class Laptop implements Comparable<Laptop> {
   String name;
   int ram;
   int price;
   public Laptop(String name, int ram, int price) {
      super();
      this.name = name;
      this.ram = ram;
      this.price = price;
   }
   public String getName() {
      return name;
   }
   public int getRam() {
      return ram;
   }
   public void setRam(int ram) {
      this.ram = ram;
   }
   public void setName(String name) {
      this.name = name;
   }
   public int getPrice() {
      return price;
   }
   public void setPrice(int price) {
      this.price = price;
   }
   @Override
   public int compareTo(Laptop o) {
      if (this.ram > o.getRam())
         return 1;
      else {
         return -1;
      }  
   }
}

Đầu ra

4
8
16

Ví dụ về Bộ so sánh

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class Laptop implements Comparator {
   String name;
   int ram;
   int price;
   public Laptop(String name, int ram, int price) {
      super();
      this.name = name;
      this.ram = ram;
      this.price = price;
   }
   public String getName() {
      return name;
   }
   public int getRam() {
      return ram;
   }
   public void setRam(int ram) {
      this.ram = ram;
   }
   public void setName(String name) {
      this.name = name;
   }
   public int getPrice() {
      return price;
   }
   public void setPrice(int price) {
      this.price = price;
   }
   @Override
   public int compare(Laptop o1, Laptop o2) {
      if (o1.getRam() < o2.getRam()) {
         return -1;
      }else if (o1.getRam() > o2.getRam()) {
         return 1;
      } else {
         return 0;
      }
   }
   public static void main(String[] args) {
      List laptopList = new ArrayList<>();
      laptopList.add(new Laptop("HCL", 16, 800));
      laptopList.add(new Laptop("Apple", 8, 100));
      laptopList.add(new Laptop("Dell", 4, 600));
      Comparator com = (Laptop o1, Laptop o2) -> o1.getName().compareTo(o2.getName());
      Collections.sort(laptopList, com);
      for (Laptop lap : laptopList) {
         System.out.println(lap.getName());
      }
   }
}

Đầu ra

Apple
Dell
HCL