Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่างตัวเปรียบเทียบและตัวเปรียบเทียบใน Java


ตัวเปรียบเทียบและตัวเปรียบเทียบเป็นอินเทอร์เฟซที่สามารถใช้เพื่อจัดเรียงองค์ประกอบของคอลเล็กชัน อินเทอร์เฟซตัวเปรียบเทียบเป็นของแพ็คเกจ 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