ความแตกต่างระหว่าง Comparable และ Comparator ใน Java

ผู้เขียน: Laura McKinney
วันที่สร้าง: 1 เมษายน 2021
วันที่อัปเดต: 15 พฤษภาคม 2024
Anonim
Interfaces Part 8:  Comparable vs. Comparator (Java)
วิดีโอ: Interfaces Part 8: Comparable vs. Comparator (Java)

เนื้อหา

Comparable และ Comparator ทั้งสองเป็นอินเตอร์เฟสทั่วไปใน Java ที่ใช้ในการเปรียบเทียบองค์ประกอบข้อมูลของวัตถุ ส่วนต่อประสานที่เปรียบเทียบได้มีอยู่ในแพ็คเกจ java.lang และส่วนต่อประสานตัวเปรียบเทียบมีอยู่ในแพ็คเกจ java.util ความแตกต่างพื้นฐานระหว่างอินเทอร์เฟซแบบเปรียบเทียบและเปรียบเทียบคืออินเทอร์เฟซแบบเปรียบเทียบให้ลำดับการเรียงเดี่ยวขณะที่อินเทอร์เฟซแบบเปรียบเทียบได้จัดลำดับการเรียงหลายอย่าง มีความแตกต่างอื่น ๆ ระหว่างอินเทอร์เฟซแบบเปรียบเทียบได้และแบบเปรียบเทียบซึ่งเราจะศึกษาในกราฟเปรียบเทียบ


  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบเทียบเคียงเปรียบเทียบ
ขั้นพื้นฐาน อินเทอร์เฟซที่เปรียบเทียบได้อนุญาตให้เรียงลำดับได้เพียงลำดับอินเตอร์เฟสตัวเปรียบเทียบช่วยให้เรียงลำดับได้หลายชุด
แพคเกจ ส่วนต่อประสานที่เปรียบเทียบได้มีอยู่ในแพ็คเกจ java.langส่วนต่อประสาน Comparator นั้นมีอยู่ในแพ็คเกจ java.util
วิธีการ ส่วนต่อประสานที่เปรียบเทียบได้มีวิธีการเดียวเท่านั้น
การเปรียบเทียบ int สาธารณะ (Object obj);
ส่วนต่อประสานเปรียบเทียบมีสองวิธี
การเปรียบเทียบ int สาธารณะ (Object obj1, Object obj2)
บูลีนเท่ากับ (Object obj)
การดำเนินงานอินเทอร์เฟซที่เปรียบเทียบได้ถูกใช้งานโดยคลาสที่มีวัตถุที่จะเปรียบเทียบอินเทอร์เฟซตัวเปรียบเทียบถูกนำมาใช้โดยคลาส sperate แทนที่จะเป็นคลาสที่มีอ็อบเจ็กต์ที่จะถูกเปรียบเทียบ
การเปรียบเทียบ เมธอด comparTo (Object obj) เปรียบเทียบวัตถุที่ใช้เพื่อเรียกใช้เมธอดที่มีอ็อบเจ็กต์ที่ระบุส่งผ่านไปยังเมธอดการเปรียบเทียบ (Object obj1, Object obj2) วิธีการเปรียบเทียบทั้งวัตถุที่ระบุที่ถูกส่งผ่านไปยังวิธีการ
รายการ / อาร์เรย์เมื่อรายการของวัตถุประเภทที่เปรียบเทียบได้จะต้องมีการเปรียบเทียบชั้นเก็บรวบรวมให้วิธีการเช่น Collections.sort (รายการ lst)เมื่อรายการของวัตถุประเภทที่เปรียบเทียบได้จะต้องมีการเปรียบเทียบชั้นคอลเลกชันให้วิธีการเช่น
Collections.sort (รายการตัวเปรียบเทียบ)


ความหมายของการเปรียบเทียบ

Comparable เป็นอินเตอร์เฟสที่มีอยู่ในแพ็คเกจ java.lang คลาสใช้อินเทอร์เฟซเครื่องมือเปรียบเทียบเพื่อเรียงลำดับวัตถุในธรรมชาติ วัตถุที่เรียงลำดับตามธรรมชาติหมายความว่าวัตถุถูกเปรียบเทียบโดยค่า ASCII คลาสที่ใช้อินเทอร์เฟซที่เปรียบเทียบได้คือไบต์, อักขระ, Double, Float, Long, Short, String และ Integer คลาส แม้แต่คลาส Date และ Calander ก็ใช้อินเตอร์เฟสที่เปรียบเทียบได้

อินเทอร์เฟซที่เปรียบเทียบได้มีวิธีเดียวเท่านั้นที่เป็น CompareTo (Object obj) วิธีนี้เปรียบเทียบวัตถุที่ใช้ในการเรียกใช้วิธีการกับวัตถุที่ระบุในพารามิเตอร์ไวยากรณ์ของวิธีการดังต่อไปนี้:

การเปรียบเทียบ int สาธารณะ (Object obj);

เมธอด CompareTo (Object obj) ส่งคืน 0เมื่อทั้งวัตถุเปรียบเทียบโดยวิธีการที่มีค่าเดียวกันก็จะกลับมา -ve มูลค่าถ้าวัตถุที่เรียกใช้มีขนาดเล็กกว่าวัตถุที่ระบุและส่งกลับ + ve value หากวัตถุที่อ้างถึงมีค่ามากกว่าเมื่อเปรียบเทียบกับวัตถุที่ระบุคลาส Collections จัดเตรียมวิธีการเรียงลำดับสำหรับการเรียงลำดับองค์ประกอบของรายการ องค์ประกอบของรายการ (และอาเรย์) ของประเภทที่สามารถเปรียบเทียบได้สามารถจัดเรียงได้โดยใช้วิธี“ Collections.sort (List lst)”


ความหมายของตัวเปรียบเทียบ

Comparator เป็นอินเตอร์เฟสที่มีอยู่ในแพ็คเกจ java.util อินเทอร์เฟซตัวเปรียบเทียบไม่ถูกนำไปใช้กับคลาสที่วัตถุถูกนำมาเปรียบเทียบแทนคลาสแยกใช้อินเทอร์เฟซตัวเปรียบเทียบเพื่อให้ตรรกะการเรียงลำดับถูกนำไปใช้กับองค์ประกอบข้อมูลแต่ละส่วนของวัตถุในคลาสอื่น เครื่องมือเปรียบเทียบมีสองวิธีดังนี้:

การเปรียบเทียบ int สาธารณะ (Object obj1, Object obj2) และบูลีนเท่ากับ (Object obj)

การเปรียบเทียบ () วิธีการดังกล่าวข้างต้นเปรียบเทียบวัตถุแรก obj1 กับวัตถุที่สอง obj2 การเปรียบเทียบ () วิธีการกลับมา 0 เมื่อทั้งวัตถุเปรียบเทียบโดยวิธีการที่มีค่าเดียวกันก็จะส่งกลับ -ve ค่าถ้าวัตถุ obj1 มีขนาดเล็กกว่าวัตถุ obj2 และส่งกลับ + ve ค่าถ้าวัตถุ obj1 มีค่ามากกว่าเมื่อเทียบกับวัตถุ obj2 equals () วิธีการตรวจสอบว่าวัตถุที่ระบุมีค่าเท่ากับวัตถุที่เรียกใช้ ผลตอบแทนที่ได้เท่ากับ () จริง ถ้าวัตถุที่เปรียบเทียบทั้งสองเท่ากันจะส่งคืน เท็จ. คลาส Collections จัดเตรียมวิธีสำหรับการเรียงลำดับองค์ประกอบของรายการและชนิดตัวเปรียบเทียบ องค์ประกอบรายการของชนิดเปรียบเทียบจะถูกจัดเรียงตามวิธีการที่ Collections.sort (รายการเปรียบเทียบ)

  1. อินเทอร์เฟซที่เปรียบเทียบได้ช่วยให้สามารถเรียงลำดับการเรียงลำดับเดียวซึ่งหมายความว่าคุณสามารถเปรียบเทียบองค์ประกอบข้อมูลเดียวของวัตถุในการเปรียบเทียบ () วิธีการในขณะที่ส่วนต่อประสานเปรียบเทียบช่วยให้ลำดับการเรียงลำดับหลายที่หมายความว่าคุณสามารถเปรียบเทียบองค์ประกอบข้อมูลหลาย ๆ
  2. อินเทอร์เฟซที่เปรียบเทียบได้ถูกนำมาใช้โดยคลาสที่มีวัตถุที่จะถูกเปรียบเทียบเนื่องจากตรรกะการเรียงลำดับถูกกำหนดภายในคลาสเดียวกัน ในทางตรงกันข้ามอินเทอร์เฟซตัวเปรียบเทียบไม่ถูกนำไปใช้โดยคลาสที่วัตถุจะถูกนำมาเปรียบเทียบเนื่องจากตรรกะการเรียงลำดับถูกกำหนดไว้ในคลาสที่แยกต่างหากซึ่งแต่ละคลาสกำหนดการเรียงลำดับบนองค์ประกอบข้อมูลเดี่ยวของวัตถุและคลาสที่กำหนดเหล่านี้ใช้อินเทอร์เฟซ .
  3. ส่วนต่อประสานที่เปรียบเทียบได้อยู่ในแพ็คเกจ java.lang ส่วนอินเตอร์เฟสเปรียบเทียบอยู่ภายในแพ็คเกจ java.util
  4. อินเทอร์เฟซที่เปรียบเทียบได้ประกาศเพียงวิธีเดียวที่เป็น ComparTo (Object obj) ในขณะที่อินเตอร์เฟสตัวเปรียบเทียบนั้นประกาศสองวิธีซึ่งคือ, เปรียบเทียบ (Object obj1, Object obj2) และเท่ากับ (Object obj)
  5. วิธีการ ComparTo (Object obj) ในการเปรียบเทียบวิธีการเปรียบเทียบการเรียกใช้วัตถุกับวัตถุที่ระบุส่งผ่านไปยังวิธีการในขณะที่วิธีการเปรียบเทียบ (Object obj1, Object obj2) ของ Comparator เปรียบเทียบวัตถุ obj1 กับ obj2 ที่ถูกส่งผ่านไปยังวิธีการ
  6. คลาส Collections มีวิธีการเรียงลำดับ“ Collections.sort (List lst)” เพื่อเรียงลำดับวัตถุชนิดที่เปรียบเทียบได้ คลาส Collections มีวิธีการเรียงลำดับ Collections.sort (รายการ Comparator) เพื่อเรียงลำดับวัตถุประเภท Comparator

สรุป:

หากคุณต้องการเรียงลำดับวัตถุตามลำดับธรรมชาติคุณสามารถใช้อินเทอร์เฟซที่เปรียบเทียบได้ซึ่งคุณต้องการเรียงลำดับวัตถุตามคุณลักษณะใด ๆ จากนั้นจะใช้อินเทอร์เฟซเปรียบเทียบ