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

เผยแพร่แล้ว: 2020-12-30

สารบัญ

เปรียบเทียบและเปรียบเทียบ: ภาพรวม

ตัวเปรียบเทียบและตัวเปรียบเทียบเป็นอินเทอร์เฟซทั้งสองในภาษาการเขียนโปรแกรม Java เพื่อกำหนดลักษณะการทำงานในคลาสที่จะถูกนำไปใช้ แม้ว่า Comparable จะใช้กับอ็อบเจ็กต์ที่มีการเรียงลำดับตามธรรมชาติ อินเทอร์เฟซตัวเปรียบเทียบจะใช้การเรียงลำดับโดยพิจารณาคุณสมบัติของออบเจ็กต์ นอกจากนี้ การเรียงลำดับตัวเปรียบเทียบยังคำนึงถึงอ็อบเจ็กต์ของสองคลาสที่ต่างกัน และ Comparable เปรียบเทียบอ็อบเจ็กต์โดยใช้การอ้างอิง "นี้"

ตอนนี้ เราได้กำหนดหลักการพื้นฐานที่อินเทอร์เฟซทั้งสองทำงานแล้ว มาดูความแตกต่างระหว่างทั้งสองกัน

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

วิธีการจัดเรียง

เปรียบได้

มันใช้ฟังก์ชันเปรียบเทียบTo() สำหรับการเรียงลำดับ นี่เป็นวิธีเดียวที่มีอยู่ในอินเทอร์เฟซการเรียงลำดับที่เปรียบเทียบได้

CompareTo(Object O) ใช้เป็นอาร์กิวเมนต์ของอ็อบเจ็กต์และเปรียบเทียบกับอ็อบเจกต์ประเภทเดียวกัน หากวัตถุเป็นสตริง คุณจะเปรียบเทียบได้กับวัตถุประเภทเดียวกันเท่านั้น เช่นเดียวกับกรณีที่มีวัตถุ int เป็นต้น CompareTo() ส่งคืนค่าจำนวนเต็มลบ บวก หรือศูนย์ตามผลลัพธ์ของการเรียงลำดับ

เครื่องเปรียบเทียบ

มีสองวิธีในการจัดเรียงองค์ประกอบในตัวเปรียบเทียบ: Compare() และ equals()

เปรียบเทียบ (Object O1, Object O2) พิจารณาสองอาร์กิวเมนต์เป็นอินพุตและให้ผลลัพธ์ที่ต้องการ จะส่งกลับจำนวนเต็มเพื่อระบุว่าอาร์กิวเมนต์แรกเปรียบเทียบกับอาร์กิวเมนต์ที่สองอย่างไร

  • ถ้า O1 น้อยกว่า O2 จะส่งกลับจำนวนเต็มลบ
  • ถ้า O1 มากกว่า O2 จะคืนค่าเป็นจำนวนเต็มบวก
  • ถ้า O1 เท่ากับ O2 มันจะคืนค่า 0

เท่ากับ (วัตถุ) พิจารณาวัตถุเป็นอินพุตและเปรียบเทียบกับตัวเปรียบเทียบ คืนค่า True หาก Object เท่ากับตัวเปรียบเทียบ นอกจากนี้ยังช่วยให้มั่นใจว่าคำสั่งจะไม่เปลี่ยนแปลง

แพ็คเกจที่ใช้

เปรียบได้

มีอยู่ในแพ็คเกจ java.lang ของ Java

เครื่องเปรียบเทียบ

มีอยู่ในแพ็คเกจ java.util ของ Java

การสั่งซื้อและคลาส

เปรียบได้

  • โดยคำนึงถึงวัตถุที่เป็นไปตามธรรมชาติ เช่น มีแนวโน้มที่จะจัดเรียงตัวเอง เช่น ลำดับตัวอักษรหรือลำดับตัวเลข กรณีชื่อ ราคา เงินเดือน เลขม้วน อายุ ฯลฯ
  • สิ่งสำคัญคือวัตถุทั้งสองอยู่ในคลาสเดียวกัน
  • อินเทอร์เฟซที่เปรียบเทียบได้เปรียบเทียบการอ้างอิง "นี้" กับวัตถุที่ระบุ
  • การเรียงลำดับโดยใช้การเปรียบเทียบจะส่งผลต่อคลาสจริง

เครื่องเปรียบเทียบ

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

ลำดับและคอลเลกชัน

เปรียบได้

  • รองรับการเรียงลำดับการเรียงลำดับเดียวเท่านั้น ซึ่งหมายความว่าคุณสามารถพิจารณาองค์ประกอบหรือแอตทริบิวต์ของคอลเลกชันได้เพียงรายการเดียว เช่น หมายเลขม้วน หรืออายุหรืออันดับ
  • สำหรับการเรียงลำดับคอลเลกชั่นของอ็อบเจ็กต์ อาร์เรย์ หรือรายการ คุณสามารถใช้คอลเลกชั่นได้ sort(List) หรือ Arrays เรียงลำดับ(รายการ). สิ่งนี้จะทำให้วัตถุอยู่ในลำดับตาม ธรรมชาติ

เครื่องเปรียบเทียบ

  • รองรับการเรียงลำดับหลายลำดับ ซึ่งหมายความว่าคุณสามารถพิจารณาองค์ประกอบหรือคุณลักษณะหลายอย่างของคอลเลกชัน เช่น หมายเลขม้วน อายุ และอันดับ
  • คุณสามารถใช้ collection.sort (รายการ, ตัวเปรียบเทียบ) เพื่อจัดเรียงคอลเลกชัน

นี่คือบทสรุปของความแตกต่างทั้งหมดระหว่าง Comparable และ Comparator

เปรียบได้ เครื่องเปรียบเทียบ
บรรจุุภัณฑ์
Java.lang Java.util
วิธีการจัดเรียง
เปรียบเทียบกับ() เปรียบเทียบ()
สั่งซื้อ
การสั่งซื้อตามธรรมชาติ สั่งซื้อเอง
ประเภทของวัตถุ
วัตถุที่เปรียบเทียบต้องเป็นชนิดเดียวกัน วัตถุของคลาสต่าง ๆ ได้รับการพิจารณา
ส่งผลกระทบต่อชั้นเรียน
คลาสได้รับการแก้ไข ไม่กระทบชั้น
ลำดับการเรียงลำดับ
ลำดับการเรียงลำดับเดียว ลำดับการเรียงลำดับหลายรายการ

ลงทะเบียนเรียน หลักสูตรการพัฒนาซอฟต์แวร์ จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

สิ่งที่ควรทราบในขณะที่ใช้ตัวเปรียบเทียบและตัวเปรียบเทียบใน Java

  • อินเทอร์เฟซที่เปรียบเทียบได้คืออินเทอร์เฟซที่เลือกใช้หากคุณขายเพื่อทำการเปรียบเทียบมาตรฐานสำหรับคลาสเฉพาะ
  • ตัวเปรียบเทียบอนุญาตให้ใช้แลมบ์ดา
  • คุณสามารถใช้วิธี CompareTo() เพื่อใช้งานทั้งตัวเปรียบเทียบและตัวเปรียบเทียบ
  • แนะนำให้ใช้อินเทอร์เฟซตัวเปรียบเทียบหากคุณต้องการความยืดหยุ่นในการจัดเรียง

บทสรุป

ในสถานการณ์จริงส่วนใหญ่ เมื่อเราจัดเรียง เรามักจะมีพารามิเตอร์หลายอย่างอยู่ในใจ นอกจากนี้ เนื่องจากการใช้ผลลัพธ์ที่เปรียบเทียบกันได้ในการจัดเรียงเริ่มต้นและไม่สามารถเปลี่ยนแปลงแบบไดนามิกได้ จึงมีประโยชน์น้อยกว่าตัวเปรียบเทียบ ซึ่งช่วยให้คุณปรับแต่งและเลือกจากวิธีการจัดเรียงที่แตกต่างกันเพื่อให้เหมาะกับความต้องการของคุณ ด้วยเหตุผลนี้เพียงอย่างเดียว Comparator พบแอปพลิเคชันที่ใช้งานได้จริงมากกว่า Comparable

อ่าน: โครงการ java ที่น่าสนใจที่ควรตรวจสอบ

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ Java, การพัฒนา full stack, ลองดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์ Full-stack ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีการฝึกอบรมที่เข้มงวดมากกว่า 500 ชั่วโมง, โครงการมากกว่า 9 โครงการ และการมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักและความช่วยเหลือด้านงานกับบริษัทชั้นนำ

อินเทอร์เฟซในภาษาการเขียนโปรแกรมคืออะไร?

การเรียนรู้ Java ง่ายหรือไม่?

Java นำเสนอกระบวนทัศน์การเขียนโปรแกรมเชิงวัตถุ ซึ่งช่วยให้นักพัฒนา Java ที่ไม่มีประสบการณ์มากที่สุดสามารถคิดและสร้างโปรแกรมได้เหมือนกับนักพัฒนาที่มีประสบการณ์ Java มีต้นกำเนิดมาจากภาษาการเขียนโปรแกรม C และ C++ ที่ใช้กันอย่างแพร่หลายในปัจจุบัน แม้ว่า Java จะมีความคล้ายคลึงกันกับ C และ C++ ในแง่ของการทำงาน แต่ก็ได้เติบโตขึ้นเป็นภาษาที่เป็นมิตรกับผู้ใช้มากขึ้น เนื่องจากการเขียนโปรแกรมเชิงวัตถุทำให้ง่ายต่อการบำรุงรักษาและแก้ไขรหัสที่มีอยู่ แม้แต่ผู้เขียนโปรแกรมมือใหม่ก็อาจเริ่มทำงานในโครงการขององค์กรได้ นักพัฒนาใหม่มีโอกาสน้อยที่จะพบกับข้อผิดพลาดรันไทม์ที่ไม่คาดฝัน เนื่องจาก Java ได้รับการตรวจสอบหาข้อผิดพลาดก่อนดำเนินการ Java บังคับให้โปรแกรมเมอร์ระบุองค์ประกอบโค้ดทั้งหมดอย่างถูกต้อง ลดโอกาสเกิดข้อผิดพลาดเมื่อแอปพลิเคชันเติบโตขึ้น

เหตุใดการเรียงลำดับจึงจำเป็นใน Java

การเรียงลำดับหมายถึงชุดของเทคนิคในการจัดเรียงตำแหน่งขององค์ประกอบในอาร์เรย์ใหม่เพื่อให้ทั้งหมดอยู่ในลำดับจากน้อยไปมากหรือมากไปหาน้อย อัลกอริธึมการเรียงลำดับที่ดีต้องทำให้มั่นใจว่าองค์ประกอบที่มีค่าเดียวกันยังคงอยู่ในอาร์เรย์ที่เรียงลำดับแล้วในลำดับเดียวกัน การเรียงลำดับเป็นสิ่งจำเป็นสำหรับการทำความเข้าใจโครงสร้างข้อมูลและอัลกอริธึมในเชิงลึก Java เป็นภาษาการเขียนโปรแกรมมีความหลากหลายเป็นพิเศษ และสามารถนำมาใช้เพื่อปรับใช้อัลกอริธึมการเรียงลำดับจำนวนหนึ่งได้ อัลกอริธึมเหล่านี้ส่วนใหญ่ใช้งานได้หลากหลายและสามารถนำไปใช้ได้ทั้งแบบเรียกซ้ำและแบบวนซ้ำ