ตัวเปรียบเทียบและตัวเปรียบเทียบเป็นอินเทอร์เฟซที่สามารถใช้เพื่อจัดเรียงองค์ประกอบของคอลเล็กชัน อินเทอร์เฟซตัวเปรียบเทียบเป็นของแพ็คเกจ java.util ในขณะที่เปรียบเทียบเป็นของแพ็คเกจ java.lang คอลเล็กชันการจัดเรียงอินเทอร์เฟซตัวเปรียบเทียบโดยใช้สองอ็อบเจ็กต์ที่มีให้ ในขณะที่อินเทอร์เฟซที่เปรียบเทียบได้จะเปรียบเทียบ "สิ่งนี้" หมายถึงออบเจ็กต์เดียวที่มีให้
ซีเนียร์ เลขที่ | คีย์ | เปรียบเทียบได้ | ตัวเปรียบเทียบ |
---|---|---|---|
1 | วิธีการ | อินเทอร์เฟซที่เปรียบเทียบได้มีเมธอด CompareTo(Object a ) | ตัวเปรียบเทียบมีวิธีการเปรียบเทียบ (Object o1, Object O2) |
2 | การจัดเรียงใช้ | วิธี Collection.sort(List) สามารถใช้เพื่อจัดเรียงคอลเล็กชันของประเภทวัตถุที่เปรียบเทียบได้ | เมธอด Collection.sort(List, Comparator) สามารถใช้เพื่อเรียงลำดับคอลเล็กชันของออบเจกต์ประเภท Comparator |
3 | ลำดับการจัดเรียง | Comparable จัดเตรียมลำดับการเรียงลำดับเดียว | ตัวเปรียบเทียบมีลำดับการเรียงลำดับหลายแบบ |
4 | แพ็คเกจ | อินเทอร์เฟซที่เปรียบเทียบได้เป็นของแพ็คเกจ java.lang | อินเทอร์เฟซตัวเปรียบเทียบเป็นของแพ็คเกจ java.util |
ตัวอย่างการเปรียบเทียบ
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; } } }
ผลลัพธ์
4 8 16
ตัวอย่างเครื่องเปรียบเทียบ
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()); } } }
ผลลัพธ์
Apple Dell HCL