Comparator Interface ใน Java พร้อมตัวอย่างคืออะไร

Comparator Interface Ni Java Phrxm Tawxyang Khux Xari



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

Comparator Interface ใน Java พร้อมตัวอย่างคืออะไร

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

ต่อไปนี้คือตัวอย่างต่างๆ ของวิธีใช้อินเทอร์เฟซ Comparator ใน Java:







ตัวอย่างที่ 1: เรียงลำดับรายการตามความยาว

ในตัวอย่างนี้ รายการของสตริงได้รับการพิจารณาและจัดเรียงตามความยาวของสตริง แทนที่จะเรียงลำดับตามตัวอักษร:



นำเข้า java.util.ArrayList ;

นำเข้า java.util.Collections ;

นำเข้า java.util.Comparator ;

นำเข้า java.util.List ;

สาธารณะ ระดับ หลัก {

สาธารณะ คงที่ เป็นโมฆะ หลัก ( สตริง [ ] หาเรื่อง ) {

รายการ < สตริง > รายการ = ใหม่ รายการอาร์เรย์ <> ( ) ;

รายการ. เพิ่ม ( 'จอห์น' ) ;

รายการ. เพิ่ม ( 'บ๊อบ' ) ;

รายการ. เพิ่ม ( 'อลิซ' ) ;

คอลเลกชัน . เรียงลำดับ ( รายการ ) ;

ระบบ . ออก . พิมพ์ ( รายการ ) ;

คอลเลกชัน . เรียงลำดับ ( รายการ, ใหม่ ตัวเปรียบเทียบความยาวสตริง ( ) ) ;

ระบบ . ออก . พิมพ์ ( รายการ ) ;

}

} // มีการกำหนดคลาส

ระดับ ตัวเปรียบเทียบความยาวสตริง ดำเนินการ เครื่องเปรียบเทียบ < สตริง > {

สาธารณะ นานาชาติ เปรียบเทียบ ( สตริง s1, สตริง เอส2 ) {

กลับ จำนวนเต็ม . เปรียบเทียบ ( s1. ความยาว ( ) , s2. ความยาว ( ) ) ;

}

}

คำอธิบายของรหัสด้านบนได้รับด้านล่าง:



  • ขั้นแรก สร้างคลาส Comparator แบบกำหนดเองที่เรียกว่า StringLengthComparator ที่ใช้อินเทอร์เฟซ Comparator
  • มันแทนที่วิธีการเปรียบเทียบ () สำหรับการเปรียบเทียบความยาวของสองสตริง
  • ในตอนท้าย ส่งอินสแตนซ์ไปยังเมธอด the.sort() เพื่อจัดเรียงรายการโดยใช้ตัวเปรียบเทียบที่กำหนดเองของเรา

เอาต์พุต





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



ตัวอย่างที่ 2: การเรียงลำดับวัตถุตามฟิลด์ที่ระบุ

อีกตัวอย่างหนึ่งดำเนินการเพื่อจัดเรียงวัตถุตามเขตข้อมูลเฉพาะ อินเทอร์เฟซ Comparator ใช้เพื่อบรรลุสิ่งนี้:

นำเข้า java.util.ArrayList ;

นำเข้า java.util.Collections ;

นำเข้า java.util.Comparator ;

นำเข้า java.util.List ;

สาธารณะ ระดับ หลัก {

สาธารณะ คงที่ เป็นโมฆะ หลัก ( สตริง [ ] หาเรื่อง ) {

รายการ < บุคคล > คน = ใหม่ รายการอาร์เรย์ <> ( ) ; // กำหนดชื่อ อายุ และเงินเดือน

คน เพิ่ม ( ใหม่ บุคคล ( 'อลิซ' , 25 , 50000 ) ) ;

คน เพิ่ม ( ใหม่ บุคคล ( 'บ๊อบ' , 30 , 75000 ) ) ;

คน เพิ่ม ( ใหม่ บุคคล ( 'ชาร์ลี' , ยี่สิบ , 40000 ) ) ;

เครื่องเปรียบเทียบ < บุคคล > เครื่องเปรียบเทียบเงินเดือน = ใหม่ เครื่องเปรียบเทียบ < บุคคล > ( ) {

// จัดเรียงบุคคลตามเงินเดือน

สาธารณะ นานาชาติ เปรียบเทียบ ( คน p1 คน p2 ) {

กลับ จำนวนเต็ม . เปรียบเทียบ ( พี 2 รับเงินเดือน ( ) , หน้า 1. รับเงินเดือน ( ) ) ;

}

} ;

คอลเลกชัน . เรียงลำดับ ( คน เงินเดือนเปรียบเทียบ ) ; กลับ เรียงลำดับค่า

// พิมพ์รายชื่อบุคคลที่เรียงลำดับ

สำหรับ ( บุคคล : คน ) {

ระบบ . ออก . พิมพ์ ( บุคคล ) ;

}

}

}

ระดับ บุคคล { // กำหนดชื่อ อายุ และเงินเดือน

ส่วนตัว สตริง ชื่อ ; // ขอบเขตภายในคลาส
ส่วนตัว นานาชาติ อายุ ;
ส่วนตัว นานาชาติ เงินเดือน ;

สาธารณะ บุคคล ( สตริง ชื่อ, นานาชาติ อายุ, นานาชาติ เงินเดือน ) {
นี้ . ชื่อ = ชื่อ ;
นี้ . อายุ = อายุ ;
นี้ . เงินเดือน = เงินเดือน ;
}
สาธารณะ สตริง รับชื่อ ( ) {
กลับ ชื่อ ;
}
สาธารณะ นานาชาติ รับอายุ ( ) {
กลับ อายุ ;
}
สาธารณะ นานาชาติ รับเงินเดือน ( ) {
กลับ เงินเดือน ;
}
สาธารณะ สตริง toString ( ) {
กลับ ชื่อ + ' (อายุ ' + อายุ + ', เงินเดือน $' + เงินเดือน + ')' ;
}
}

คำอธิบายของรหัสได้รับด้านล่าง:

  • คลาสที่เรียกว่า “ บุคคล ” มีสามช่อง: “ ชื่อ ”, “ อายุ ', และ ' เงินเดือน ' เป็นที่ยอมรับว่า.
  • หลังจากนั้น ให้จัดเรียงคอลเลกชันของวัตถุบุคคลโดยขึ้นอยู่กับเงินเดือนจากมากไปน้อย

เอาต์พุต

ผลลัพธ์แสดงให้เห็นว่ามีการจัดเรียงเงินเดือนตามลำดับจากมากไปน้อย

บทสรุป

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