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ó.
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 | Phương thức 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. | Phương thức 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