ตัวเปรียบเทียบและตัวเปรียบเทียบ: ความแตกต่างระหว่างตัวเปรียบเทียบและตัวเปรียบเทียบ
เผยแพร่แล้ว: 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 เป็นภาษาการเขียนโปรแกรมมีความหลากหลายเป็นพิเศษ และสามารถนำมาใช้เพื่อปรับใช้อัลกอริธึมการเรียงลำดับจำนวนหนึ่งได้ อัลกอริธึมเหล่านี้ส่วนใหญ่ใช้งานได้หลากหลายและสามารถนำไปใช้ได้ทั้งแบบเรียกซ้ำและแบบวนซ้ำ